Einzelnen Beitrag anzeigen

taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#32

Re: Verhindern eine Anwendung mehrfach zu starten

  Alt 6. Mai 2008, 15: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
  Mit Zitat antworten Zitat