2011-11-06 93 views
2

有誰知道如何重定向/捕獲模態Windows錯誤對話框?對於只是試圖運行程序並捕獲退出代碼和stdout/stderr輸出的非交互式命令行程序而言,這確實存在問題。將Windows對話框錯誤消息重定向到控制檯

最近這個問題的實例是一個模式Windows對話框具有以下形式:

程序無法啓動,因爲< foo.dll&GT是從計算機中缺少。嘗試重新安裝程序來解決這個問題。

(其中模態GUI窗口的標題爲「系統錯誤」)

+0

對於從.bat/.cmd文件或命令行提示符啓動的任何進程,此對話框已被取消。除了進程退出代碼之外,沒有診斷可用。你可以從啓用加載程序捕捉中獲得一些信息,但僅用於調試:http://blogs.msdn.com/b/junfeng/archive/2006/11/20/debugging-loadlibrary-failures.aspx –

+0

@HansPassant:不要以爲這是真的。我剛剛檢查過Windows 7,從批處理文件或命令行提示符啓動的程序會生成錯誤對話框。 (或者也許它取決於失敗的可執行文件是控制檯還是GUI?) –

回答

3

這些系統錯誤對話框可以與SetErrorMode()抑制。在這種情況下,CreateProcess()應該失敗,並且GetLastError()應該給你相應的錯誤代碼。