Wie kann ich verhindern, da ein Programm doppelt gestartet wird.
Ich denke unter Windows könnte man dies mit FindWindow lösen.
Gibt es dafür auch etwas Platformübergreifendes ?
Doppelstart verhindern.
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Doppelstart verhindern.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 957
- Registriert: Mo 11. Sep 2006, 22:56
Re: Doppelstart verhindern.
Unter Windows macht man das eigentlich so:
(wobei es unter Windows mehrere gut funktionierende Möglichkeiten gibt.)
btw: Über UniqueInstance hab' ich bisher nur Gutes gehört...
(wobei es unter Windows mehrere gut funktionierende Möglichkeiten gibt.)
btw: Über UniqueInstance hab' ich bisher nur Gutes gehört...
Code: Alles auswählen
CONST
MutexName = 'MeinProgramm MuTeX';
VAR
hMutex: THandle;
Begin
Try
hMutex:= CreateMutex(Nil, True, MutexName);
If (hMutex = 0) Or (GetLastError = ERROR_ALREADY_EXISTS)
Then Exit;
Try
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
Finally
If hMutex <> 0
Then CloseHandle(hMutex);
End;
Except
// LOG...
End;
End.
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Doppelstart verhindern.
creed steiger hat geschrieben:http://wiki.freepascal.org/UniqueInstance
sollte helfen denke ich
Danke, dies scheint recht gut zu funktionieren.
Was noch ein Tüpfchen auf dem i wäre, wen es das schon gestartet in den Vordergrund holen würde.
Die Anleitung gibt es sogar in deutsch: http://wiki.lazarus.freepascal.org/UniqueInstance/de
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Doppelstart verhindern.
Nur als Ergänzung. Man könnte das Ganze auch per SimpleIPC (http://www.freepascal.org/docs-html/3.0.0/fcl/simpleipc/tsimpleipc.html) lösen. Damit kann man verschiedene zusätzliche Kommandos einpflegen.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Doppelstart verhindern.
Ich hab' noch 'ne andere Version gefunden:...
Die scheint neuer zu sein, hab' sie aber noch nicht ausprobiert...
Die scheint neuer zu sein, hab' sie aber noch nicht ausprobiert...
- Dateianhänge
-
- UniqueInstance V5.rar
- (15.07 KiB) 78-mal heruntergeladen
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Doppelstart verhindern.
Die scheint neuer zu sein, hab' sie aber noch nicht ausprobiert...
Hast du diese aus der Zukunft geholt ?
Alles Jahrgang 2035.
Die Dateien scheine alle gleich gross zu sein, wie im obigen Link.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot