程式者的胡言亂語
取消Windows應用程式在存取違規時的錯誤視窗
在Windows裡,若應用程式對記憶體做了非法的存取,便會跳出一個錯誤視窗,其標題是「XXXX.exe發生問題,必須關閉,謹此致歉。」最近遇到一個情況,不想讓這個視窗出現,找了一些方法想要取消它的出現,包括試了API hook想要攔到CreateWindow系列的API,都無功而返。後來朋友找到一個方法,才是真正的解決之道。原來Microsoft有一個叫做SetErrorMode()的API,傳入SEM_NOGPFAULTERRORBOX做為參數,即可取消此種類型的錯誤視窗。這API或許很少人知道吧,哈哈 XD
Posted at 04:17下午 六月 04, 2009 by Chien-Hsing Wang in General | 迴響[6]
星期四 六月 04, 2009

真正的方法應該是找到 GP Fault 的原因並修正才對.
不過這也算是沒有辦法中的辦法.
謝謝你的分享, 希望我沒有用到的一天 :p
由...發表 Todd on 六月 04, 2009 at 04:47 下午 CST #
謝分享囉~
由...發表 thomastan on 六月 04, 2009 at 06:04 下午 CST #
To Todd,
原因是,用到了一個 MS 的 ActiveX, 但它就會是 crash :p 這我們也找不出為什麼它會 crash, 但又不能讓這個視窗block住接下來的執行,所以最後只好這麼做了
由...發表 Qing on 六月 04, 2009 at 06:07 下午 CST #
To Qing,
原來是 external issue 阿, 那還真是避不開也修不了, 原來如此.
由...發表 Todd on 六月 04, 2009 at 08:56 下午 CST #
SetErrorMode 這 API 很多人知道吧!
存取磁碟,特別是光碟或軟碟之類需要外插碟片的時候,為了避免磁碟機中沒有碟片會跳出錯誤訊息的問題,都會在處理開檔的前後用這個函式去夾。
由...發表 scarfman on 六月 04, 2009 at 09:09 下午 CST #
To scarfman:
嗯,這是我孤陋寡聞了 :)
由...發表 Qing on 六月 04, 2009 at 10:21 下午 CST #