Einfachste Lösung:
Delphi-Quellcode:
program ProjectMutex;
{$APPTYPE CONSOLE}
uses
Windows;
var
mHandle: THandle;
begin
mHandle := CreateMutex(nil, True, '979246B5-A7CA-7E5F-A01C-8034E778B70C');
if GetLastError = ERROR_ALREADY_EXISTS then
begin
Halt;
end;
// machwas
ReadLn;
if mHandle <> 0 then
CloseHandle(mHandle);
end.
Andere Lösung: eine
Unit schreiben, die man im Projekt möglichst weit oben in der uses-Liste angibt. Darin wie bisher mit initialization und finalization arbeiten.