System Delphi

Just add this unit to your uses clause
uses Single;
and your program will not be started twice:

unit Single;
interface
implementation
uses Windows, SysUtils;
var hnd: THandle;
initialization
hnd := CreateMutex(nil, True, 'irgendwaseinmaliges');
if GetLastError = ERROR_ALREADY_EXISTS then Halt;
finalization
if hnd <> 0 then CloseHandle(hnd);
end.