Nur eine Instanz eines Programms zulassen
-
Hi,
ich würde gerne nur eine Instanz meines Programms zulassen, und wenn eine zweite Instanz versucht zu starten, soll diese Ihre Parameter der ersten Instanz übergeben oder eine Funktion der ersten instanz aufrufen und sich wieder schliessen.
Wie kann man sowas realisieren?
(Verwende auch Qt, falls es das vereinfacht)mfg
-
so was geht nicht betriebssystemunabhängig - und ob qt das kann, weiß ich nicht
aber ich kann dir sagen, dass es (unter windows) bsp.-weise mit mutex-en(http://msdn.microsoft.com/en-us/library/ms686927(VS.85).aspx) geht (global + namen geben).
(dort wird ziemlich viel über threads etc stehen - aber ist auch für deinen fall eine durchaus gängige lösung(imho so gar _die_ lösung ;D)bb
-
Man könnte auch eine Datei erstellen und dort nachschauen.
-
Nexus schrieb:
Man könnte auch eine Datei erstellen und dort nachschauen.
naja - was is z.bsp., wenn das programm abstürzt? dann kann man das programm nicht wieder öffnen, weil es selbst denkt, es wäre noch offen...
-
unskilled schrieb:
naja - was is z.bsp., wenn das programm abstürzt? dann kann man das programm nicht wieder öffnen, weil es selbst denkt, es wäre noch offen...
Man kann die Datei während des Programmdurchlaufs offen halten, sodass kein anderes Programm gleichzeitig zugreifen kann. Stürzt das Programm ab, sollte das Betriebssystem die Datei eigentlich wieder freigeben. So kommt die Abfrage, ob das Programm bereits läuft, einer Prüfung des Dateizugriffs gleich, man muss gar nichts schreiben.
Alternativ kann man alle paar Sekunden die aktuelle Zeit in die Datei schreiben. Eine neue Instanz des Programms schaut dann nach, ob die letzte geschriebene Zeit schon eine Weile her ist.
Aber das sind nur spontane Ideen... Vielleicht ist ja Plattformunabhängigkeit wichtig.

-
-
danke Tobiking2 ... das ist natürlich die ideale Lösung.
auch natürlich an die anderen danke.mfg