Есть программа, не создающая никаких окон и работающая в фоновом режиме.
Нужно сделать так, чтоб при повторном запуске она только завершала свой предыдущий процесс.
Сделал event'ами, насколько хорош такой способ?
uses Windows;
var
Ev: THandle;
begin
Ev := CreateEvent(nil, true, false, 'unique123');
if GetLastError() = ERROR_ALREADY_EXISTS then
begin
SetEvent(Ev);
Exit;
end;
MessageBox(0, 'Started.', '', 0);
repeat
if WaitForSingleObject(Ev, 50) = 0 then break;
until false;
MessageBox(0, 'Stopped.', '', 0);
CloseHandle(Ev);
end.