2010-10-30 84 views

回答

10

可以通过调用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()呼叫仍将失败,虽然。

+0

非常感谢这个诀窍! – 2010-10-30 11:20:23

+1

也许拳头调用可能是oldErrorMode = SetErrorMode(0)? – 2010-10-30 11:23:20

+2

这是有争议的:)另一个线程可能会调用'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