
|
导读//主要思路:在另个个线程查找到该消息框,然后发WM_CLOSE消息 //为区别是其他的程序的消息框,我在提示的标题上多了一个空格,其实也可以用其他的办法。 //原码如下: var myc... //主要思路:在另个个线程查找到该消息框,然后发WM_CLOSE消息 //为区别是其他的程序的消息框,我在提示的标题上多了一个空格,其实也可以用其他的办法。 //原码如下: var myclose:tcloseother; begin myclose:=tcloseother.Create(false); myclose.FreeOnTerminate:=true; application.MessageBox('程序已经运行!','消息提示 ',mb_ok+mb_iconinformation); end; unit closeother; interface uses Classes,messages,sysutils,windows,forms; type tcloseother = class(TThread) private { Private declarations } protected procedure Execute; override; public //procedure create(myhwnd:integer); end; implementation { Important: Methods and properties of objects in VCL can only be used in a method called using Synchronize, for example, Synchronize(UpdateCaption); and UpdateCaption could look like, procedure tcloseother.UpdateCaption; begin Form1.Caption := 'Updated in a thread'; end; } { tcloseother } //procedure tcloseother.create(myhwnd: integer); //begin //end; procedure tcloseother.Execute; const NumSec=5; //设置5秒后自动关闭 var messagehwnd:integer; starttime:tdatetime; begin StartTime := now; repeat Application.ProcessMessages; until Now > StartTime + NumSec * (1/24/60/60); messagehwnd:=FindWindow(nil,'消息提示 '); postmessage(messagehwnd,wm_close,0,0); end; end. |
温馨提示:喜欢本站的话,请收藏一下本站!