Festellen ob schon eine Instanze eines Programm läuft?

Alles rund um die Programmierung mit Qt
grisu1972
Beiträge: 66
Registriert: 9. November 2007 16:08

Festellen ob schon eine Instanze eines Programm läuft?

Beitrag von grisu1972 »

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
grisu1972
Beiträge: 66
Registriert: 9. November 2007 16:08

Beitrag von grisu1972 »

Hallo Leute,

kann man dazu QAxFactory benutzen, ist das sinnvoll?
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Hallo,
  • * 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
Mehr fällt mir gerade nicht ein :-)

Ciao,
Sephral
grisu1972
Beiträge: 66
Registriert: 9. November 2007 16:08

Beitrag von grisu1972 »

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!
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

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..
.........................
speack português italiano deutsch english castellà qt
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Hallo,

QtSingleApplication ist Teil des Qt Solutions-Pakets (kostet extra).

http://trolltech.com/products/qt/addon/ ... plication/

Ciao,
Sephral
grisu1972
Beiträge: 66
Registriert: 9. November 2007 16:08

Beitrag von grisu1972 »

Also:
- das Paket habe ich nicht!
- Windows API will ich nicht!
- Sockets darf ich nicht!

bleibt QtLockedFile! Wollte ich auch nicht, scheint aber die angemessene Lösung!
Werde wohl das lokale Logfile benutzen um festzustellen ob die Applikation läuft!


Danke für die Hinweise, finde ich gut!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

WindowsApi geht nicht? Ein globaler named Mutex und fertig - genau das was (denke ich) QtSingleApplication auch macht.

Das Du das Paket nicht hast ist klar - wurde ja auch schon zweimal gesagt warum... :roll:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag von Sephral »

Christian81 hat geschrieben:WindowsApi geht nicht? Ein globaler named Mutex und fertig - genau das was (denke ich) QtSingleApplication auch macht.
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.

Ciao,
Sephral
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Außerdem hatten wir das Thema in der Vergangenheit des öfteren => Forumssuche
grisu1972
Beiträge: 66
Registriert: 9. November 2007 16:08

Beitrag von grisu1972 »

Mir ist "globaler named Mutex" nicht klar, wie kann man aus einer Applikation heraus auf die Mutex einer anderen (globalen) Mutex zugreifen oder ist es gar keine QMutex sonder irgendetwas mit WinAPI?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn ich sage das es nur unter Windows geht wird es wohl WinAPI sein...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Beitrag von RHBaum »

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 ...
PeterLustig
Beiträge: 386
Registriert: 21. November 2007 20:07

Beitrag von PeterLustig »

Ab 4.4 kann man dies auch über Shared Memory lösen.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

PeterLustig hat geschrieben:Ab 4.4 kann man dies auch über Shared Memory lösen.
Da der link mit beispiel:

http://wiki.qtcentre.org/index.php?titl ... pplication

falls man sucht im forum " Shared Memory "
.........................
speack português italiano deutsch english castellà qt
Antworten