Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
Delphi 7 Professional
|
Re: Verhindern eine Anwendung mehrfach zu starten
6. Mai 2008, 16:34
Moin, Moin,
vielleicht kann die Suche nach einer Lösung abgekürzt werden. Ich verwende seit Jahren mit Erfolg folgende Unit...
Delphi-Quellcode:
unit rzM_OneInstanceOnly;
// Unit lediglich in das Projekt aufnehmen, danach werden mehrere Instanzen
// des Programmes unterbunden; bei erneutem Aufruf wird automatisch die
// erste Instanz aktiviert.
interface { ----------------------------------------------------------------- }
implementation { ------------------------------------------------------------ }
uses Forms,SysUtils,Windows;
var Mutex : THandle;
MName : String;
h : HWnd;
initialization { ------------------------------------------------------------ }
MName:=ExtractFileName(ChangeFileExt(Application.ExeName,' _MTX'));
Mutex:=CreateMutex( nil,true,pchar(MName)); // Mutex anlegen
if GetLastError=ERROR_ALREADY_EXISTS then begin // Fehler, Pgm schon aktiv!
h:=0; // vorhandene Instanz suchen
repeat
h:=Windows.FindWindowEx(0,h,PChar(' TApplication'),PChar(Application.Title))
until h<>Application.Handle;
if h<>0 then begin // aktivieren
Windows.ShowWindow(h,SW_Restore);
Windows.SetForegroundWindow(h);
end;
halt; // und diesen zweiten Aufruf beenden!
end;
finalization { -------------------------------------------------------------- }
ReleaseMutex( Mutex); // Mutex der ersten Instanz wieder freigeben!
end.
Ralph
|
|
Zitat
|