Thema: Delphi Doppelstart verhindern

Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Doppelstart verhindern

  Alt 11. Jun 2002, 14:58
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]
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat