問題が発生したため、プログラムが正しく動作しなくなりました。プログラムは閉じられ、解決策がある場合はWindowsから通知されます。
を表示させないプログラムは以下のとおり。
#include <exception> #include <Windows.h> void main() { SetErrorMode(SEM_NOGPFAULTERRORBOX); throw std::exception(); //例外を投げる }
表示させたい場合は以下の通り。
#include <exception> #include <Windows.h> void main() { SetErrorMode(0);//なくてもよいが throw std::exception(); //例外を投げる }
ただし、レジストリで以下の設定をしておかないと SetErrorMode
を変えても表示されないので注意
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Windows Error Reporting Disabled DWORD 00000000 DontShowUI DOWRD 00000000
Windows Error Reporting
がない場合は自分でキーを作成すべし。変更後は要再起動。
参照
SetErrorMode function (Windows)
逆引きWIN32API: 一般保護例外ダイアログを出さなくする方法 - seclan のほえほえルーム