Wie kann ich verhindern, daß meine Anwendung mehrmals gestartet wird?
Dafür gibt es in Window eine Art Markierung, die sog. Mutex. In diesem Beispiel wird solch ein Mutex beim ersten Programmstart erzeugt, beim zweiten Start kann dann keine Markierung mehr unter demselben Namen erzeugt werden und die zweite Instanz bricht ab:
unit NichtDoppeltStarten; interface implementation uses windows, Dialogs, sysutils; var mHandle: THandle; Initialization mHandle := CreateMutex(nil,True,'xxxxx'); // 'xxxxx' ist eine eindeutige Kennung, z.B. der Anwendungsname if GetLastError = ERROR_ALREADY_EXISTS then begin showMessage('Anwendung läuft bereits'); Halt; end; finalization if mHandle<>0 then CloseHandle(mHandle) end.
Tip von Dieter Hirt
Delphi 1 | Delphi 2 | Delphi 3 | Delphi 4 |
nicht getestet | Version nicht betroffen | getestet |
siehe auch:
Delphi FAQ