日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

如何让程序异常退出后重启

發(fā)布時(shí)間:2025/3/15 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何让程序异常退出后重启 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

標(biāo) 題:如何讓程序異常退出后重啟
發(fā)信人:蔡子楠
出處:http://www.freeeim.com/
時(shí) 間:2008-02-14 11:25:22

???? “程序 FreeEIM.exe 遇到問題異常退出,是否重啟?”,類似的情況我們似乎碰見過,很多程序都有這個(gè)功能;這是怎么實(shí)現(xiàn)的呢?經(jīng)過一番努力,在MSDN找到了SetUnhandledExceptionFilter函數(shù),利用它,可以實(shí)現(xiàn)這個(gè)功能。其實(shí)這個(gè)過程叫做SEH("Structured Exception Handling")結(jié)構(gòu)化異常處理。是操作系統(tǒng)提供給程序設(shè)計(jì)者的強(qiáng)有力的處理程序錯(cuò)誤或異常的武器。我在這里簡單的說一下如何使用,如有錯(cuò)誤,請(qǐng)高手不吝指正。

???? 有了它,太好了。要是你的程序無緣無故蕩掉了,你可以利用它,幫你的程序重啟。

一,處理函數(shù)
程序在出現(xiàn)異常時(shí),會(huì)調(diào)用這個(gè)函數(shù),我們就在這里處理程序蕩后的所有事,包括重啟。
原型:LONG WINAPI FreeEIM_UnhandledExceptionFilter(LPEXCEPTION_POINTERS ExceptionInfo);
我們這里先簡單試驗(yàn)一下。

LONG WINAPI FreeEIM_UnhandledExceptionFilter(LPEXCEPTION_POINTERS ExceptionInfo)
{
??? MessageBox(NULL,"FreeEIM","FreeEIM",MB_OK);
??? return EXCEPTION_EXECUTE_HANDLER;
}// 此代碼可以 COPY - PASTE 使用。

然后在OnInitDialog()里加入:

SetUnhandledExceptionFilter(FreeEIM_UnhandledExceptionFilter);// 此代碼可以 COPY - PASTE 使用。
int *i=0;// 此代碼可以 COPY - PASTE 使用。
*i=0;// 此代碼可以 COPY - PASTE 使用。

編譯看看有什么結(jié)果。

二,如何重啟
重啟也不難,這里我們用到一個(gè)函數(shù)WinExec,函數(shù)比較常用,不熟悉的上GOOGLE找一下。

LONG WINAPI FreeEIM_UnhandledExceptionFilter(LPEXCEPTION_POINTERS ExceptionInfo)
{
??????? char szFileName[_MAX_PATH];
??????? ::GetModuleFileName(NULL, szFileName, _MAX_PATH);
??????? if ( MessageBox(NULL,"程序 FreeEIM.exe 遇到問題異常退出,是否重啟?","FreeEIM",MB_YESNO)
??????????????? == IDYES )
??????????????? WinExec(szFileName, SW_SHOW);

??? return EXCEPTION_EXECUTE_HANDLER;
}// 此代碼可以 COPY - PASTE 使用。

然后在OnInitDialog()里加入:

SetUnhandledExceptionFilter(FreeEIM_UnhandledExceptionFilter);// 此代碼可以 COPY - PASTE 使用。
int *i=0;// 此代碼可以 COPY - PASTE 使用。
*i=0;// 此代碼可以 COPY - PASTE 使用。

編譯一下,一個(gè)簡單的異常重啟程序就實(shí)現(xiàn)了。


參考文檔

《SEH in ASM 研究》 原文地址:http://www.pediy.com/bbshtml/bbs4/kanxue310.htm
作者:Hume/冷雨飄心

總結(jié)

以上是生活随笔為你收集整理的如何让程序异常退出后重启的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。