//主要思路:在另个个线程查找到该消息框,然后发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.