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;