Wie kann ich verhindern, daß mein Programm 2 mal (zur gleichen Zeit) gestartet wird ??
Unter 32Bit-Windows bedient man sich eines
Mutex. Binde folgende
Unit ein, du musst sie einfach nur deinem Projekt hinzufügen:
Delphi-Quellcode:
unit NichtDoppeltStarten;
interface
implementation
uses windows,Dialogs,sysutils;
var mHandle: THandle;
// Mutexhandle
Initialization
mHandle := CreateMutex(
nil,True,'
xxxxx');
// 'xxxxx' Der Anwendungsname ist hier einzutragen
if GetLastError = ERROR_ALREADY_EXISTS
then begin
// Anwendung läuft bereits
{showMessage('Anwendung läuft bereits!!!!!');}
// Wenn du deine Meldung willst, mach die Klammern weg
Halt;
end;
finalization // ... und Schluß
if mHandle <> 0
then
CloseHandle(mHandle)
end.
{Dieter Hirt}
Um die Lösung nicht nur für den aktuell angemeldeten Benutzer greifen zu lassen (eine Programminstanz pro User), sonder für das ganze System (eine Programminstanz pro Rechner), bedarf es nur dem string 'Global\' als Präfix für den Mutexnamen.
[edit=Matze][code] durch [delphi]-Tags ersetzt. Mfg, Matze[/edit]
[edit=Dax]reformat. Mfg, Dax[/edit]
[edit=Dax]'Global\'-Tipp hinzugefügt. Mfg, Dax[/edit]