2009-12-15 261 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