ShowMessage这种模态窗体会使本线程挂起,你可以试试用其他线程模式键盘操作 发出一个 回车按键如给你代码procedure TForm1.Timer1Timer(Sender: TObject); begin keybd_event(13,MapVirtualKey(13,0),0,0); keybd_event(13,MapVirtualKey(13,0),KEYEVENTF_KEYUP,0); end;procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('hi'); end;
beyondtkl(大龙驹<逝追.弗瑞德>) 得方法很好 我得稍微复杂点,提供出来参考 timer1timer; var h:thandle; begin h:=findwindow('#32770','Project1');//h:=getactivewindow也行但要保证showmessage窗口时当前最顶端窗口 #32770是showmessage窗体得类名 我以前自己写得用enumwindows和enumchildwindows枚举所有窗体自己找出来的 project1是窗体名 if h<>0 then postmessage(h,wm_close,0,0); end;
begin
keybd_event(13,MapVirtualKey(13,0),0,0);
keybd_event(13,MapVirtualKey(13,0),KEYEVENTF_KEYUP,0);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('hi');
end;
我得稍微复杂点,提供出来参考
timer1timer;
var
h:thandle;
begin
h:=findwindow('#32770','Project1');//h:=getactivewindow也行但要保证showmessage窗口时当前最顶端窗口
#32770是showmessage窗体得类名 我以前自己写得用enumwindows和enumchildwindows枚举所有窗体自己找出来的 project1是窗体名
if h<>0 then
postmessage(h,wm_close,0,0);
end;
创建一个form,和“showmessage”界面设置一样
当需要的时候创建
不要的时候freeandnil