精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>图形界面和窗体>>Re:在程序中如何判断程序已经运行?(dephi)

主题:Re:在程序中如何判断程序已经运行?(dephi)
发信人: 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
 

[关闭][返回]