4
当调用LoadLibrary()时,是否可以静默地捕获错误弹出窗口,如“程序入口点xxx无法位于动态链接库xxx中”?当调用LoadLibrary()时,默默地捕获窗口错误弹出窗口()
当调用LoadLibrary()时,是否可以静默地捕获错误弹出窗口,如“程序入口点xxx无法位于动态链接库xxx中”?当调用LoadLibrary()时,默默地捕获窗口错误弹出窗口()
可以通过调用SetErrorMode()取消错误弹出窗口:
// GetErrorMode() only exists on Vista and higher,
// call SetErrorMode() twice to achieve the same effect.
UINT oldErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS);
SetErrorMode(oldErrorMode | SEM_FAILCRITICALERRORS);
HMODULE library = LoadLibrary("YourLibrary.dll");
// Restore previous error mode.
SetErrorMode(oldErrorMode);
到LoadLibrary()呼叫仍将失败,虽然。
非常感谢这个诀窍! – 2010-10-30 11:20:23
也许拳头调用可能是oldErrorMode = SetErrorMode(0)? – 2010-10-30 11:23:20
这是有争议的:)另一个线程可能会调用'SetErrorMode(SEM_FAILCRITICALERRORS)',所以即使在很短的时间内重置错误模式也会有问题。请记住,'SetErrorMode()'是进程范围的。 [SetThreadErrorMode()](http://msdn.microsoft.com/zh-cn/library/dd553630%28v=VS.85%29.aspx)是线程范围的,但它仅在Windows 7/Server 2008 R2上受支持和更高。 – 2010-10-30 11:33:46