怎么编程实现自动关闭对话框?(100分)

B

bobzjh

Unregistered / Unconfirmed
GUEST, unregistred user!
我在窗口退出的onclosequery里添加了如下代码<br>if(MessageDlg("click me",mtConfirmation,TMsgDlgButtons() &lt;&lt; mbOK&lt;&lt;mbCancel, 0)==mrOk)<br>&nbsp; &nbsp; &nbsp; &nbsp; CanClose = true;<br>&nbsp; &nbsp; else<br>&nbsp; &nbsp; &nbsp; &nbsp; CanClose = false;<br>这样当关闭该窗口,会询问是否确定,如果点击确定就关闭该窗口。<br>我在socket接收到关闭命令后,在关这个窗口的时候会有对话框弹出,问怎么实现自动关闭<br>该对话框,即模拟鼠标点击“OK”,然后关闭该窗口。
 
加一个timer控件,然后在ONTIMER中输入<br>&nbsp; &nbsp; &nbsp; &nbsp; SetForegroundWindow(hwnd);<br>&nbsp; &nbsp; &nbsp; &nbsp; keybd_event(VK_Menu, MapVirtualKey(VK_Menu, 0), 0, 0);<br>&nbsp; &nbsp; &nbsp; &nbsp; keybd_event(VK_F4, MapVirtualKey(VK_F4, 0), 0, 0);<br>&nbsp; &nbsp; &nbsp; &nbsp; keybd_event(VK_F4, MapVirtualKey(VK_F4, 0), KEYEVENTF_KEYUP, 0);<br>&nbsp; &nbsp; &nbsp; &nbsp; keybd_event(VK_Menu, MapVirtualKey(VK_Menu, 0), KEYEVENTF_KEYUP, 0);<br><br>hwnd为你的窗口的handle
 
再给这个窗口类加个控制关闭的属性,socket接收到关闭命令后,设置<br>属性值为true.在CloseQuery 事件处理过程中作相应的判断就行了.
 
白河愁:<br>程序异常了!我在socket接收里把你代码放进去,结果异常了。cbuilder的快捷F9,变成了<br>alt+F9<br>xeen:<br>不能修改那个窗口,因为这窗口是别人的。<br>
 
你开一个新FROM,然后放一个button<br><br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>&nbsp; SetForegroundWindow(0);<br>&nbsp; keybd_event(VK_Menu, MapVirtualKey(VK_Menu, 0), 0, 0);<br>&nbsp; keybd_event(VK_F4, MapVirtualKey(VK_F4, 0), 0, 0);<br>&nbsp; keybd_event(VK_F4, MapVirtualKey(VK_F4, 0), KEYEVENTF_KEYUP, 0);<br>&nbsp; keybd_event(VK_Menu, MapVirtualKey(VK_Menu, 0), KEYEVENTF_KEYUP, 0);<br>end;<br>
 
说一个笨办法,抛砖引玉.<br>你可以查找当前所有的窗口,找到这个对话框后,向它发一个消息不就结了吗?<br>呵呵......
 
多人接受答案了。
 
顶部