发信人: iamfly2000(我在飞,飞呀飞) 
整理人: teleme(2000-12-29 11:37:59), 站内信件
 | 
 
 
【 在 034455 的大作中提到:】
 :在程序中如何判断程序已经运行?(dephi)
 用FINDWINDOW并不是好办法,比较好的办法是用MUTEX和内存消息映射,MUTEX的我有源程序,贴出来吧(这是我自己做的一个小软件中DPR文件的一部分)
 var
   hmutex:HWND;
   ret:integer;
   apptit:string;
   osver:dword;
   osverhi:dword;
   osverlow:dword;
 begin
   Application.Initialize;
   apptit:='iseeit for NT/WIN2k';
   hmutex:=createmutex(nil,false,pchar(apptit));
   ret:=getlasterror;
   osver:=getversion();//获得操作系统版本号
   osverlow:=dword(LOBYTE(LOWORD(osver)));
   osverhi:=dword(HIBYTE(LOWORD(osver)));
   if not((osverhi=0) and (osverlow=5)) then
   begin
      application.MessageBox('非常抱歉,本软件只能在WIN2000下运行!','操作系统错误!',mb_ok);
      releasemutex(hmutex);
      application.Terminate ;
   end;
 
   if ret<>ERROR_ALREADY_EXISTS then
   begin
     Application.Title := 'iseeit for NT/WIN2k';
   Application.CreateForm(TForm1, Form1);
   Application.CreateForm(TAboutBox, AboutBox);
   Application.CreateForm(Tsaysth, saysth);
   Application.CreateForm(Tmdls, mdls);
   Application.Run;
   end
   else
   begin
     application.messagebox('程序正在运行,可能隐藏了在后台,'#10'请按程序定义的快捷键看看有无反应!','警告!',MB_OK);
     releasemutex(hmutex);
   end;
 end.
 如果有什么不明白的地方,可以发EMAIL给我:[email protected]
  
 
  ---- love delphi,use delphi
 life in delphi,dead in MSN
   | 
 
 
 |