Podria usarse un mutex?
Código Delphi
[-]
procedure OpenMutex(const AMutexName: string);
var
FMutex: Cardinal;
begin
FMutex := CreateMutex(NIL, True, PWChar(Format('%s.mutex', [AMutexName])));
if (FMutex = 0) or (GetLastError = ERROR_ALREADY_EXISTS) then
RaiseLastOSError;
end;
Edito: Ya veo que te respondio escafandra que seguro la tiene mas clara en estos temas