2016-09-09 2 views
2

Ich würde gerne wissen, wie Sie Befehlszeilenargumente an ein bereits geöffnetes Programm übergeben. Der Benutzer führt also "backup.exe -job awef" aus, und backup.exe erkennt, dass ein bereits geöffneter Prozess vorhanden ist, und übergibt das Argument an den bereits geöffneten Prozess, damit Benutzer das Programm über die Befehlszeile oder eine Verknüpfung ausführen können in Fenstern. Danke!Wie übergeben Sie Befehlszeilenargumente an ein bereits geöffnetes Programm in QT?

Antwort

1

Sie Ihr Ziel durch Verwendung QtSingleApplication erreichen können, die die Kommandozeilenargumente auf MessageReceived behandelt, wie pro https://doc.qt.io/archives/qtextended4.4/qtopiadesktop/qtsingleapplication.html#QtSingleApplication

Zu Beginn Ihrer Anwendung, müssen Sie überprüfen, ob Sie mit Ihrem Kommandozeilenargumente zu einem bereits nachrichts können Instanz ausführen und dann beenden. Andernfalls werden Sie auch weiterhin Ihre App starten, als

int main(int argc, char* argv[]) 
{ 
    QtSingleApplication app("MySingleInstance", argc, argv); 

    // try to send commandline arguments 
    if(app.sendMessage(app.arguments().join("$"))) 
    { 
     return 0; 
    } 

    /* connect your messageRecieved signal to slot 
    SomeClass::slotLoadCommandLine to be able to handle 
    the commandline arguments from sendMessage*/ 
    QObject::connect(qApp, SIGNAL(messageReceived(QString)), 
        SomeClass, SLOT(slotLoadCommandLine(QString))); 

    //start your application 
    return app.exec(); 
} 

folgt bearbeiten

+0

@shellter kein Problem. .. wir alle lernen .. danke für deinen Kommentar :)! – HazemGomaa

+0

Ist diese Klasse veraltet? Ich finde es nicht in der aktuellen Klassendokumentation oder irgendwelchen Bibliotheken in meinem Programm. –

+0

Welche Qt-Version? – HazemGomaa

Verwandte Themen