{$IFDEF MUTEX-APP}
procedure TFrBaseMain.FormRestore(var message: TMessage);
begin
if IsIconic(Application.Handle) = TRUE then
Application.Restore
else
Application.BringToFront;
end;
{$ENDIF}
{$IFDEF MUTEX-APP}
var
MutexHandle:Thandle;
//用互斥对象的方法控制应用程序只启动一个进程
procedure CreateMutexAPP(strAppClassName:string);
Var
RvHandle: hWnd;
begin
MutexHandle := CreateMutex(nil, TRUE, PAnsiChar(strAppClassName));
if MutexHandle <> 0 then
begin
if GetLastError = ERROR_ALREADY_EXISTS then
begin
releasemutex(Mutexhandle);
CloseHandle(MutexHandle);
RvHandle := FindWindow(PAnsiChar(strAppClassName),NIL);
if RvHandle > 0 then
begin
//showWarn(RvHandle,'不能在同一台计算机上同时运行多个程序!');
windows.MessageBox(RvHandle,
'不能在同一台计算机上同时运行多个程序!',
'警告!',
MB_OK+MB_ICONWARNING+MB_SYSTEMMODAL);
PostMessage(RvHandle,MSG_RESTORE,0,0);
end;
Halt;
end;
end;
end;
procedure CloseMutexAPP;
begin
if Mutexhandle=0 then exit;
releasemutex(Mutexhandle);
CloseHandle(MutexHandle);
end;