Packe die folgenden Zeilen in die .dpr-Datei, damit kannst Du einen zweiten Programmstart abfangen. Ein
Mutex gilt systemweit und läßt sich nur einmal erzeugen. Beim zweiten Versuch gibt es einen Fehler (ERROR_ALREADY_EXISTS), damit weißt Du, das das Programm schon läuft. Die Konstante sMyMutex ist beliebig, sollte aber schon einigermaßen einmalig im System sein.
programm ...
const
sMyMutex = 'BlaBlaBla';
function AlreadyStarted: Boolean;
begin
CreateMutex(nil, False, sMyMutex);
Result := GetLastError = ERROR_ALREADY_EXISTS;
end;
begin
if AlreadyStarted then begin
Exit;
end;
...
end.