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