我正在尝试使用LoadLibrary加载一个DLL。 默认情况下,如果找不到库,它将返回代码127(ERR_MOD_NOT_FOUND),这很好。 但是,如果可以find,并有一些错误…说我正在加载libraryA.dll,它需要加载的库,并且它无法find它,它会创build一个有用的错误popup框。
这很好,但我宁愿没有popup框。 在我的应用程序中,加载库失败可能是应用程序故障,但仍然有可能恢复正常。 因此,我不能让应用程序挂起,而我们等待用户戳一个OKAYbutton。 但是,由于可能是完全失败,我希望能够捕获并存储此有用的错误消息,以便以后向用户展示。
我已经达到了SetErrorMode函数。 调用
SetErrorMode(SEM_FAILCRITICALERRORS);
禁用popup,这是伟大的,但我仍然希望能够以某种方式获取描述错误的文本string。 就目前而言,LoadLibrary仍然失败,代码127,当错误不是无法findlibraryA.dll,但是libraryA.dll无法加载libraryB.dll时,这是非常不真实的。
根据SetErrorMode -> SEM_FAILCRITICALERRORS
文档 :
系统不显示关键error handling程序消息框。 相反,系统将错误发送给调用进程。
所以理论上应该有可能捕获这个消息,我只是不知道如何,文档似乎没有给出任何提示。 我做了一些谷歌回答,但要么没有logging在任何地方,要么我不知道正确的关键字search。
所以我也是
A)需要弄清楚如何捕获由SetErrorMode沉默的错误
B)在禁用popup窗口的同时,以其他方式获取有用的错误消息(比“指定的模块找不到”更有用)。
我将不胜感激任何帮助,你们可以给。 我在C ++方面相当有经验,但是我的windows-programming-fu很糟糕。
谢谢!