Реферат: Предотвращение запуска 2-x копий программы
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
var
hMutex : THandle;
begin
hMutex := CreateMutex(nil, False, 'UniqueProgrammMutex');
if WaitForSingleObject(hMutex, 0) <> wait_TimeOut then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.
Этот метод является безусловно надежнее предыдущего. Единственный недостаток этого метода - это то, что при запуске копии программы главное окно запущенного приложения не активируется, хотя это легко можно исправить путем поиска главного окна в списке окон либо с помощью описанной функции FindWindow.