OneInst.pas
上传用户:tj00001
上传日期:2007-01-07
资源大小:672k
文件大小:1k
源码类别:

行业应用

开发平台:

Delphi

  1. unit OneInst;
  2. interface
  3. uses
  4.   Windows, SysUtils, Forms;
  5. function CheckInstance:boolean;
  6. implementation
  7. var
  8.   MyAppName, MyClassName: array[0..255] of Char;
  9.   NumFound: Integer;
  10.   LastFound, MyPopup: HWND;
  11. function LookAtAllWindows(Handle: HWND; Temp: LongInt): BOOL; stdcall;
  12. var
  13.   WindowName, ClassName: Array[0..255] of Char;
  14. begin
  15.   if (GetClassName(Handle, ClassName, SizeOf(ClassName)) > 0) and
  16.      (StrComp(ClassName, MyClassName) = 0) and
  17.      (GetWindowText(Handle, WindowName, SizeOf(WindowName)) > 0) and
  18.      (StrComp(WindowName, MyAppName) = 0) then
  19.   begin
  20.     Inc(NumFound);
  21.     if Handle <> Application.Handle then LastFound := Handle;
  22.   end;
  23.   Result:= True;
  24. end;
  25. function CheckInstance:boolean;
  26. begin
  27.   Result:=false;
  28.   NumFound := 0;
  29.   LastFound := 0;
  30.   GetWindowText(Application.Handle, MyAppName, SizeOf(MyAppName));
  31.   GetClassName(Application.Handle, MyClassName, SizeOf(MyClassName));
  32.   EnumWindows(@LookAtAllWindows, 0);
  33.   if NumFound> 1 then
  34.   begin
  35.     MyPopup := GetLastActivePopup(LastFound);
  36.     BringWindowToTop(LastFound);
  37.     if IsIconic(MyPopup)
  38.       then ShowWindow(MyPopup, SW_RESTORE)
  39.       else SetForegroundWindow(MyPopup);
  40.     Application.Terminate;
  41.     Result:=true;
  42.   end
  43. end;
  44. end.