var
myMutex,FindHid:HWND;
MoudleName:string;
function
EnumWndProc(hwnd:Thandle;param:Cardinal):bool;stdcall;
var
ClassName,WinMoudleName:string;
WinInstance:THandle;
begin
result:=true;
SetLength(ClassName,100);
GetClassName(hwnd,pchar(ClassName),length(ClassName));
ClassName:=pchar(ClassName);
if ClassName=TFmmain.ClassName then
begin
WinInstance:=GetWindowLong(hwnd,GWL_HINSTANCE);
setlength(WinMoudleName,100);
GetModuleFileName(WinInstance,pchar(WinMoudleName),length(WinMoudleName));
WinMoudleName:=pchar(WinMoudleName);
if
WinMoudleName=MoudleName then
begin
FindHid:=hwnd;
result:=false;
end;
end;
end;
begin
myMutex:=CreateMutex(nil,false,'XXXXX');
if
WaitForSingleObject(myMutex,0)<>wait_TimeOut
then
begin
Application.Initialize;
Application.Title := 'XXXX';
Application.CreateForm(TfmMain, fmMain);
Application.Run;
end
else
begin//也可以用findwindows的方法找窗体
SetLength(MoudleName,100);
GetModuleFileName(HInstance,pchar(MoudleName),length(MoudleName));
MoudleName:=pchar(MoudleName);
EnumWindows(@EnumWndProc,0);
if FindHid<>0 then
begin
ShowWindow(FindHid,SW_MAXIMIZE);//重复运行显示窗体
SetForegroundWindow(FindHid);
end;
end;
end.
加载中,请稍候......