Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Programm nur einmal starten bei "send to tray"

  Alt 8. Sep 2007, 00:10
Moin mobed,

diese Prüfung sollte man möglichst in der Projektdatei durchführen.
Probier's mal so (das muss im Projektquelltext ergänzt werden, um die Application.xxx-Zeilen herum):

Delphi-Quellcode:
uses
  windows;

var
  dwMutex : DWORD;

begin
  // eine GUID sollte eindeutig sein, deshalb besser geeignet, als ein "normaler" string
  // Wenn man die GUID für jedes Programm wo man es braucht neu erzeugt, läuft man auch
  // nicht Gefahr u.U. das man den String in verschiedenen Programmen doppelt verwendet
  dwMutex := CreateMutex(nil,true,'{1E43985D-925A-4733-B556-1BF25A069E3C}');
  try
    if ((dwMutex <> 0) and (GetLastError = ERROR_ALREADY_EXISTS)) then exit;
      Application.Initialize;
      Application.CreateForm(.....);
      Application.Run;
    end;
  finally
    if dwMutex <> 0 then CloseHandle(dwMutex);
  end;
end;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat