发信人: 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
|
|