Festellen ob schon eine Instanze eines Programm läuft?
Festellen ob schon eine Instanze eines Programm läuft?
Hallo Leute,
gibt es eine Möglichkeit mittels QT festzustellen ob schon eine Instanz eines Programms läuft?
Lieber keinen Workaround über das Dateisystem oder ähnliches!
Grüsse Carsten
gibt es eine Möglichkeit mittels QT festzustellen ob schon eine Instanz eines Programms läuft?
Lieber keinen Workaround über das Dateisystem oder ähnliches!
Grüsse Carsten
Hallo,

Ciao,
Sephral
- * QtLockedFile (Qt Solution)
* QtSingleApplication (Qt Solution)
* Process Status API (Windows), schauen ob der Prozess läuft
* Ganz trivial: Öffne einen Socket und prüfe beim Programmstart ob dieser noch auf ist bzw ob du darauf binden kannst.
* Netzwerkweit: Verwende einen UDP-Broadcast auf den laufende Instanzen antworten
Ciao,
Sephral
Hallo,
bei mir kommt nur QtSingleApplication in Frage. habe auch schon im QTAssistenten danach gesucht, ich finde keinen Eintrag
Das Problem ist:
a. Netzwerk ist pfui, wird jede Woche gescannt, brauch ich gar nicht zu versuchen.
b. das Programm liegt auf einen Server und kann von verschiedenen Clients gestartet werden. Daher ist Dateibasierend auch nichts zu machen.
Grüsse Carsten
Nachtrag:
ich habe die kommerzielle Version von QT. Ich hätte erwartet das es in dem QT Assistenten zumindest beschrieben wird!
Werde es mal versuchen!
bei mir kommt nur QtSingleApplication in Frage. habe auch schon im QTAssistenten danach gesucht, ich finde keinen Eintrag
Das Problem ist:
a. Netzwerk ist pfui, wird jede Woche gescannt, brauch ich gar nicht zu versuchen.
b. das Programm liegt auf einen Server und kann von verschiedenen Clients gestartet werden. Daher ist Dateibasierend auch nichts zu machen.
Grüsse Carsten
Nachtrag:
ich habe die kommerzielle Version von QT. Ich hätte erwartet das es in dem QT Assistenten zumindest beschrieben wird!
Werde es mal versuchen!
suche mal " qtsingleapplication.cpp " " qtsingleapplication.h "
bei http://www.google.com/codesearch an 2° stelle must halt fuer qt4 portieren.... zum downloaden falsch .... kopieren ja..
bei http://www.google.com/codesearch an 2° stelle must halt fuer qt4 portieren.... zum downloaden falsch .... kopieren ja..
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt
Hallo,
QtSingleApplication ist Teil des Qt Solutions-Pakets (kostet extra).
http://trolltech.com/products/qt/addon/ ... plication/
Ciao,
Sephral
QtSingleApplication ist Teil des Qt Solutions-Pakets (kostet extra).
http://trolltech.com/products/qt/addon/ ... plication/
Ciao,
Sephral
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Ist zwar schon ne Weile her, aber ich glaube QtSingleApplication arbeitet lediglich mit Windows-Messages, die zwischen Fenstern mit dem selben Namen ausgetauscht werden. Mag aber sein, dass das inzwsichen anders läuft, hab mir die letzten Updates nicht genauer angeschaut.Christian81 hat geschrieben:WindowsApi geht nicht? Ein globaler named Mutex und fertig - genau das was (denke ich) QtSingleApplication auch macht.
Ciao,
Sephral
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
versteh nicht deine "Abneigung" vor der winapi ....
QT intern macht naturgemaess sehr regen gebrauch von der winapi, sonst waer gar keine gui/netzwerk etc moeglich.
Es gibt nun mal Dinge, die kann nur das BS ...
Plattformunabhaengigkeit heisst auch nicht, das Du keine systemspezifischen besonderheiten verwendest, sondern das du fuer alle Plattformen eine API zur verfuegung stellst, die sich gleich verhaelt.
verwende die winapi .... kapsel die funktionalitat in ner Klasse, und check per makro die plattform ab. wenn du spaeter auf ne andere plattform migrierst, schreibe den zweig fuer das andere os, nutze dessen besonderheiten dafuer ... wieder per makros auf dieses BS beschraenkt ... wenn mal spaeter alle OS implementiert hasst, ist deine Klasse Plattformunabhaengig.
das abchecken geht mit allen BS Objecten, die fuers IPC gedacht sind und ne "named" version haben. Das heisst ein prozess legt das ding an ueber nen eindeutigen namen, und der 2.te prozess kriegt ne (fehler)meldung wenn er versucht mit dem selben namen anzulegen.
Das geht mit Mutex (unter windows heissen die critical sections), semaphoren, pipes, events, shared memory .....
selbst die wahl des mittels wuerd ich vom BS abhaengig machen ...
linux kannst viel auf filebene machen, grad durch das /var system ...
unter windows eher unelegant, da koenntest andere dinge wiederum besser nutzen als unter linux ...
Ciao ...
QT intern macht naturgemaess sehr regen gebrauch von der winapi, sonst waer gar keine gui/netzwerk etc moeglich.
Es gibt nun mal Dinge, die kann nur das BS ...
Plattformunabhaengigkeit heisst auch nicht, das Du keine systemspezifischen besonderheiten verwendest, sondern das du fuer alle Plattformen eine API zur verfuegung stellst, die sich gleich verhaelt.
verwende die winapi .... kapsel die funktionalitat in ner Klasse, und check per makro die plattform ab. wenn du spaeter auf ne andere plattform migrierst, schreibe den zweig fuer das andere os, nutze dessen besonderheiten dafuer ... wieder per makros auf dieses BS beschraenkt ... wenn mal spaeter alle OS implementiert hasst, ist deine Klasse Plattformunabhaengig.
das abchecken geht mit allen BS Objecten, die fuers IPC gedacht sind und ne "named" version haben. Das heisst ein prozess legt das ding an ueber nen eindeutigen namen, und der 2.te prozess kriegt ne (fehler)meldung wenn er versucht mit dem selben namen anzulegen.
Das geht mit Mutex (unter windows heissen die critical sections), semaphoren, pipes, events, shared memory .....
selbst die wahl des mittels wuerd ich vom BS abhaengig machen ...
linux kannst viel auf filebene machen, grad durch das /var system ...
unter windows eher unelegant, da koenntest andere dinge wiederum besser nutzen als unter linux ...
Ciao ...
-
PeterLustig
- Beiträge: 386
- Registriert: 21. November 2007 20:07
Da der link mit beispiel:PeterLustig hat geschrieben:Ab 4.4 kann man dies auch über Shared Memory lösen.
http://wiki.qtcentre.org/index.php?titl ... pplication
falls man sucht im forum " Shared Memory "
.........................
speack português italiano deutsch english castellà qt
speack português italiano deutsch english castellà qt