龙人在线
about me

Arron

抛砖只为引玉(QQ长期隐身在线)
不能富贵难成大器皆因懒,
胸无大志庸庸碌碌只为闲。

这里是我平时收集的和写的一些东西,希望和大家一起共同进步!

无聊看看电影 边听音乐边看 有空多交流
Google_search
Google
hot
latest
photos
还你真实的开幕式!震撼美图[转]【连载】 央行今日发行600万张面额10元奥运纪念钞(组图) 巧遇日本妹妹海滩拍片片 诱不可挡超级丰胸大美人
links
龙人在线 >> 学习资料 >> Delphi专栏 >> Delphi防止程序重复运行

Delphi防止程序重复运行

来源:来自网络 作者:不详 日期:2010-04-19 热度:

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.

Tags: Delphi
广告位招租,广告代号:gg468
Class Navigation
search
站内
advertise
Copyright © www.jx19.Com All rights reserved.