程式者的胡言亂語

pageicon 星期四 六月 04, 2009

取消Windows應用程式在存取違規時的錯誤視窗

Windows裡,若應用程式對記憶體做了非法的存取,便會跳出一個錯誤視窗,其標題是「XXXX.exe發生問題,必須關閉,謹此致歉。」最近遇到一個情況,不想讓這個視窗出現,找了一些方法想要取消它的出現,包括試了API hook想要攔到CreateWindow系列的API,都無功而返。後來朋友找到一個方法,才是真正的解決之道。原來Microsoft有一個叫做SetErrorMode()API,傳入SEM_NOGPFAULTERRORBOX做為參數,即可取消此種類型的錯誤視窗。這API或許很少人知道吧,哈哈 XD

迴響:

真正的方法應該是找到 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 #

發表迴響:
  • HTML 語法: 關閉
把對母乳媽媽的感謝與支持傳出去

« 三月 2010
星期日星期一星期二星期三星期四星期五星期六
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
   
       
今日

Search this blog

Links

Weblog menu

Today's referrers

Feeds