Иногда нужно запретить запуск программы более одного раза, сделать это легко

На многих сайтах я встречал только говнокод. Вот нашел нормальное понятное решение.

Var
h : THandle;

procedure TMain.FormCreate(Sender: TObject);

begin
begin
h := CreateMutex(nil, True, PChar(ExtractFileName(Application.ExeName)));
if WaitForSingleObject(h, 0)<>0 then
begin
ShowMessage(‘Программа уже запущена!’);
Application.Terminate;
CloseHandle(h);
end;
end;