OneInst (判斷AP是否重複執行) |
尚未結案
|
roger128
初階會員 發表:27 回覆:45 積分:25 註冊:2002-08-29 發送簡訊給我 |
unit OneInst; interface uses
Windows, SysUtils, Forms; function CheckInstance:boolean; implementation var
MyAppName, MyClassName: array[0..255] of Char;
NumFound: Integer;
LastFound, MyPopup: HWND; function LookAtAllWindows(Handle: HWND; Temp: LongInt): BOOL; stdcall;
var
WindowName, ClassName: Array[0..255] of Char;
begin
if (GetClassName(Handle, ClassName, SizeOf(ClassName)) > 0) and
(StrComp(ClassName, MyClassName) = 0) and
(GetWindowText(Handle, WindowName, SizeOf(WindowName)) > 0) and
(StrComp(WindowName, MyAppName) = 0) then
begin
Inc(NumFound);
if Handle <> Application.Handle then LastFound := Handle;
end;
Result:= True;
end; function CheckInstance:boolean;
begin
Result:=false;
NumFound := 0;
LastFound := 0;
GetWindowText(Application.Handle, MyAppName, SizeOf(MyAppName));
GetClassName(Application.Handle, MyClassName, SizeOf(MyClassName));
EnumWindows(@LookAtAllWindows, 0);
if NumFound> 1 then
begin
MyPopup := GetLastActivePopup(LastFound);
BringWindowToTop(LastFound);
if IsIconic(MyPopup)
then ShowWindow(MyPopup, SW_RESTORE)
else SetForegroundWindow(MyPopup);
Application.Terminate;
Result:=true;
end
end; end.
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |