我們在Windows上用Visual Studio 2005開發C++應用程序(很多MFC)。防止Windows上的非交互式進程阻止對話框/消息框/掛起GUI?
偶爾會出現我們的夜間構建和/或單元測試掛起的問題,因爲某些應用程序或幫助程序工具的某些部分會在由構建命中的角落案例中打開消息框。
由於沒有附加任何桌面會話運行自動化的東西(通過Windows服務),顯然沒有人可以確認 - 甚至讀取 - GUI消息。
有什麼辦法讓Windows阻止應用程序打開對話框?或者,也許是一種觀看服務會話的工具,可自動殺死任何打開對話框的應用程序?
我在想,大多數情況下,應用程序顯示意外的彈出消息,它將最終從user32.dll
調用MessageBox*
函數之一,它可能會「奇蹟般地」使這些函數在某些登錄時失敗 - 會議? (只是一個瘋狂的想法。)
很明顯,「正確的」修復方法是不打開任何對話框的東西,但對於第三方工具,它並不總是可能的,並且與我們的工具,它會更好地有一個失敗單元測試,告訴我測試「非法」打開一個消息框比有懸掛單元測試。
(旁註:我們正在使用如Boost.Test我們的單元測試和的FinalBuilder我們的自動構建腳本。)
注意:刪除原標籤[持續集成構建的自動化自動化的測試]和改變的問題更加以過程爲中心。
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/ef65c750-1db8-4a42-9c73-beaee390cef4 – 2011-05-03 11:41:36
也許:http://msdn.microsoft.com/en-us /library/ms940850%28v=WinEmbedded.5%29.aspx – 2011-09-15 15:30:19
@Hans ...這個鏈接似乎是'Windows XP Embedded' – 2011-09-19 12:47:17