procedure TForm1.Button1Click(Sender: TObject); begin showmessage('123'); end;procedure TForm1.Timer1Timer(Sender: TObject); var HWindow, HButton: THandle; //句柄变量 Begin HWindow := 0; While true Do Begin HWindow := FindWindowEx(0, HWindow, 'TMessageForm', 'Project2');//Showmessage的窗体 if hwindow=0 then begin exit; end else Begin HButton := FindWindowEx(HWindow, 0, 'TButton','OK');//找到按钮 SendMessage(HButton, BM_CLICK, 0, 0);//单击按纽 break; End; end; End;//Winxp+D7测试通过~~`
可以使用键盘模拟的api,keybdevent()模仿按下回车键
jackie168(三箭齐发) is good!!!!!!
procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('ok');end;procedure TForm1.Timer1Timer(Sender: TObject); begin keybd_event(13,0,KEYEVENTF_EXTENDEDKEY or 0,0); keybd_event(13,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0); end;
for i:=0 to 9 do
begin
showmessage(inttostr(i));
//代码 怎么实现把这个对话框自动关掉
end;
在这个过程中,不需要人为的去点击确定按钮,就能使程序向下运行
把自己的窗口show出来(Fform1.show)
fform1.show;
//Timer1.enable:=true;
//用Timer控间或者其他方法延时1段时间
Fform1.hide;
//继续其他代码
begin
showmessage('123');
end;procedure TForm1.Timer1Timer(Sender: TObject);
var HWindow, HButton: THandle; //句柄变量
Begin
HWindow := 0;
While true Do
Begin
HWindow := FindWindowEx(0, HWindow, 'TMessageForm', 'Project2');//Showmessage的窗体
if hwindow=0 then
begin
exit;
end
else
Begin
HButton := FindWindowEx(HWindow, 0, 'TButton','OK');//找到按钮
SendMessage(HButton, BM_CLICK, 0, 0);//单击按纽
break;
End;
end;
End;//Winxp+D7测试通过~~`
begin
ShowMessage('ok');end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
keybd_event(13,0,KEYEVENTF_EXTENDEDKEY or 0,0);
keybd_event(13,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;
用timer用实现自动关闭
例子,某软件的试用版执行一个很有用的批处理,但未注册要求的只能每执行一个步骤,就得敲一次Ctrl+Enter键,作者被搞得不厌其烦,就写了个发送虚拟事件的程序,搞定.不过如果ShowMessage()的程序是自己写的,要发出关闭消息的与它又在同一程序内,做个定时默认关闭的还是比较直接,FindWindowEx实际要枚举许多窗口的。