方法一:
var
hMutex:hwnd;
ret:integer;
begin
Application.Initialize;
hmutex:=createMutex(nil,false,'project1');
ret:=getlasterror;
if ret<>error_already_exists then
begin
Application.CreateForm(TMainFrm, MainFrm);
Application.Run;
end
else
begin
Application.MessageBox('程序已经运行,请不要运行两次','程序不能运行',MB_OK or MB_ICONERROR);
end;
releasemutex(hmutex);
end.
方法二:
你可以用消息机制!
还有,为了怕程序重复启动,也不需要这样的麻烦!
就在主窗体creat时,写上以下代码:
var
str : string;
HForm : Hwnd;
begin
str := 'FormName '//这里不是FormName,而是主窗体的名,自己输入了!
HForm := FindWindow(nil,Pchar(str));
if HForm > 0 then Application.Terminate;
...
end;