2009-12-15 262 views
2

我想等待并从另一个应用程序中关闭一个模式窗体(弹出窗口),一旦出现。我想从VB.NET做到这一点,但C#中的建议应该很容易翻译。从vb.net关闭模式弹出窗口?

我可以在我的应用程序中对模式弹出窗口的标题进行硬编码,因为它很长且很独特。我想要做的是模拟用户单击表单上的关闭(“X”)按钮,或者单击表单中的标签0按钮。要么工作。

也许我需要更多关于标题栏标题以外的模式弹出窗口的信息?无论如何,使用它作为该模式形式的唯一标识符是安全的。我还希望该代码在关闭弹出窗口的第一个事件发生后立即终止检查。

我相信这是微不足道的,但我找不到任何准备好的信息。微软说,我不应该送WM_CLOSE的模式弹出,因为它会调用的DestroyWindow ()代替的EndDialog(),但说实话,我甚至不知道什么是“发送WM_CLOSE”到“窗口”的意思=/

感谢您分享一下guru-ness! :D

P.S .:在AutoHotkey中这可能是微不足道的。我感到不知所措,I know I need it

回答

1
IntPtr handle = FindWindow(null, "Dialog_Title"); 
SendMessage(handle, WM_NCDESTROY, 0, 0); 

这应该关闭对话框

+0

WM_NCDESTROY = 0×0082 – 2009-12-16 19:59:58

+0

呃......只是为了更好地理解它; “摧毁”是否意味着它会关闭整个应用程序?而且,您的评论意味着我可以使用0x0082而不是WM_NCDESTROY,或者我***应该使用它? – 2009-12-16 21:24:37

+0

另外,我该如何检查窗口是否存在? (返回一个布尔值)谢谢! – 2009-12-16 21:27:34