windows下如何做软件崩溃前提示界面

windows API有一个函数SetUnhandledExceptionFilter可以在程序崩溃之前捕获崩溃事件,它接受一个函数指针参数,我们可以利用它进行诸如崩溃前数据保存、记录日志,或者是重启等。

在系统初始化后,注册崩溃捕获函数

SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)ApplicationCrashHandler);//注册异常捕获函数

异常捕获函数的定义为:

LONG ApplicationCrashHandler(EXCEPTION_POINTERS *pException)
{
         //To Do
//What you want

.......



//创建 Dump 文件
HANDLE hDumpFile = CreateFile(QTime::currentTime().toString("HH时mm分ss秒zzz.dmp").utf16(), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if( hDumpFile != INVALID_HANDLE_VALUE)
{
//Dump信息
MINIDUMP_EXCEPTION_INFORMATION dumpInfo;
dumpInfo.ExceptionPointers = pException;
dumpInfo.ThreadId = GetCurrentThreadId();
dumpInfo.ClientPointers = TRUE;
//写入Dump文件内容
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), hDumpFile, MiniDumpNormal, &dumpInfo, NULL, NULL);
}
    return EXCEPTION_EXECUTE_HANDLER;
}

你可能感兴趣的:(windows下如何做软件崩溃前提示界面)