请问SetErrorMode(SEM_NOGPFAULTERRORBOX)怎么用?用在哪儿?或者其他的解决方案

victorforever 2004-09-13 11:50:07
我想,让程序出现异常的时候,自动退出,而不出现出错对话框.
SetErrorMode(SEM_NOGPFAULTERRORBOX)怎么用?用在哪儿?
或者给出其他的解决方案也可以,谢谢!!!
我们试验了挺长时间了,都没试验出来.在线等,解决了,立马加分
...全文
1093 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sodangerous 2004-09-14
  • 打赏
  • 举报
回复
中途加入Destroywindow
DentistryDoctor 2004-09-14
  • 打赏
  • 举报
回复
SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOGPFAULTERRORBOX);
是可以的,我就是这么用的。你可能需要处理一下未处理异常。(我一般用try/catch)
victorforever 2004-09-14
  • 打赏
  • 举报
回复
自己顶
victorforever 2004-09-14
  • 打赏
  • 举报
回复
或者用__try{}__except(){}怎么实现?
大家帮忙啊
victorforever 2004-09-14
  • 打赏
  • 举报
回复
麻烦给个调试通过的例程,谢谢!!
SetErrorMode(SEM_NOGPFAULTERRORBOX)和
SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOGPFAULTERRORBOX);
我都试验过了不好使,可能是我写的不对
DentistryDoctor 2004-09-14
  • 打赏
  • 举报
回复
SetErrorMode(SEM_NOGPFAULTERRORBOX)的意思是即使程序出现未处理异常,也不弹出错误信息,而是安静的离开。

SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOGPFAULTERRORBOX);就可以满足你的要求,另外,下面的仅供参考

_set_new_mode(1);//设置new底层通过malloc分配内存
_set_se_translator(SeTranslator);//设置结构化异常到标准C++异常的转换
_set_error_mode(_OUT_TO_STDERR);//设置C++的错误信息输出方式
SetErrorMode(SEM_FAILCRITICALERRORS|SEM_NOGPFAULTERRORBOX);//设置错误处理模式
SetUnhandledExceptionFilter((LPTOP_LEVEL_EXCEPTION_FILTER)UnknowExceptionHandler);//设置未处理的结构化异常处理例程
set_terminate( term_func );//设置C++终止程序处理例程
set_unexpected(Unexpected);//设置未处理C++异常处理例程
_set_purecall_handler(PurecallHandler);//设置纯虚函数调用处理例程
_set_new_handler(handle_program_memory_depletion);//设置new失败的处理例程,只有当_set_new_mode(1)时才有效。
victorforever 2004-09-14
  • 打赏
  • 举报
回复
如果不用SetErrorMode,自己写异常处理,怎么实现啊?
victorforever 2004-09-14
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <process.h>
#include <time.h>

void main(void)
{
__try
{
int a=0;
int b=5;
int c=b/a;
printf("c=%d\n",c);
}
__except(???)//这应该是什么啊?比如写什么,能捕捉到所有异常
{
.......
}

}
DentistryDoctor 2004-09-14
  • 打赏
  • 举报
回复
建立楼主读一下<windows核心编程>
victorforever 2004-09-14
  • 打赏
  • 举报
回复
基本搞定了.谢谢各位.
如果我想用__try __except捕捉异常,自己写异常处理函数,又该怎么写呢
victorforever 2004-09-14
  • 打赏
  • 举报
回复
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <process.h>
#include <time.h>

void main(void)
{

UINT uOldErrorMode;

uOldErrorMode = SetErrorMode(SEM_NOOPENFILEERRORBOX);

int a=0;
int b=5;
int c=b/a;

printf("c=%d\n",c);

SetErrorMode(uOldErrorMode);
}
我写的这个测试程序不行啊,关闭不了异常对话框.
程序用C,也只能用__try __except,但是要怎么写呢.各位老大帮忙
Kudeet 2004-09-14
  • 打赏
  • 举报
回复
参考
Suppressing "Cannot Find MYDLL.DLL" Error Box
http://support.microsoft.com/default.aspx?scid=kb;en-us;111610

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧