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
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
die Lösung oben ist für Qt4, wenn Sie QT5 verwenden, müssen Sie SingleApplication statt
verwendenhttps://forum.qt.io/topic/22460/solved-qtsingleapplication-and-qt-5/5
Eine andere Option könnte die Verwendung von Sockets (z.B. QTcpSocket). Aber Sie werden eine andere Anwendung erstellen, die Ihre Kommandozeilenargumente leitet .. Sehen Sie dieses Beispiel http://www.bogotobogo.com/Qt/Qt5_QTcpSocket_Signals_Slots.php
A gepatcht QtSingleApplication Bibliothek für QT 5 zur Verfügung steht, wie hier diskutiert: https://forum.qt.io/topic/71778/what-happened-to-qtsingleapplication
- 1. Wie kann ich Befehlszeilenargumente an ein Erlang-Programm übergeben?
- 2. Wie kann ich Befehlszeilenargumente an ein Perl-Programm übergeben?
- 3. Wie kann ich Befehlszeilenargumente an einen bereits laufenden Prozess übergeben?
- 4. Wie übergeben Sie Befehlszeilenargumente an ein Docker-Bild
- 5. So übergeben Sie Befehlszeilenargumente an MSI Installer
- 6. Wie man Argumente an ein bereits geöffnetes Terminal über System.Diagnostics.Process() übergeben
- 7. Wie kann auf Befehlszeilenargumente zugegriffen werden, die an ein Go-Programm übergeben werden?
- 8. Wie viele Daten kann ich über seine Befehlszeilenargumente an ein C++ - Programm übergeben?
- 9. So übergeben Sie Befehlszeilenargumente in Xcode
- 10. Wie übergeben Sie obligatorische und optionale Befehlszeilenargumente an Perl-Skript?
- 11. Befehlszeilenargumente in F # -Programm?
- 12. Python, Komponententest - Übergeben Sie Befehlszeilenargumente an setUp von unittest.TestCase
- 13. So übergeben Sie Befehlszeilenargumente an eine PowerShell ps1-Datei
- 14. ScalaTest: Übergeben Sie Befehlszeilenargumente an ScalaTest maven goal
- 15. Wie übergeben Befehlszeilenargumente BuildSrc-Projekt in Gradle?
- 16. C-Programm zum Ausführen eines Bash-Skripts + Übergeben seiner Befehlszeilenargumente
- 17. Übergeben Sie ein Prädikat an QWaitCondition?
- 18. Perl: übergeben Sie Dateigriff an ein Programm lesen STDIN
- 19. Übergeben Sie den Dateinamen an Programm
- 20. Twitter Bootstrap - offen Modal über ein bereits geöffnetes Modal
- 21. Wie übergeben Sie Befehlszeilenargumente von einem Python-Modul an ein anderes
- 22. Wie übergeben Sie Befehlszeilenargumente in Luci openwrt sys.exec() -Funktion?
- 23. Übergeben von "*()" als Argument an ein Programm in Bash
- 24. Qt unter Linux, wie ein Prozess erkannt wird bereits ausgeführt?
- 25. Wie übergeben Sie Befehlszeilenargumente bei der Verwendung von Ideone?
- 26. Kann Befehlszeilenargumente in Ruby 2.0.0 nicht übergeben
- 27. bash - Befehlszeilenargumente an Skript
- 28. Inhalt in ein neues geöffnetes Fenster einfügen
- 29. Übergeben von Befehlszeilenargumenten an bereits ausgeführte Instanz meiner Anwendung
- 30. Falsche Befehlszeilenargumente Nummer beim Übergeben von `*`
@shellter kein Problem. .. wir alle lernen .. danke für deinen Kommentar :)! – HazemGomaa
Ist diese Klasse veraltet? Ich finde es nicht in der aktuellen Klassendokumentation oder irgendwelchen Bibliotheken in meinem Programm. –
Welche Qt-Version? – HazemGomaa