如何防止第三方库显示MessageBox?

Jer*_*emy 16 .net winapi

我正在将第三方基于C的SDK集成到我的.NET应用程序中.该应用程序将作为服务器上的Windows服务运行,因此它不应以任何方式与用户交互.

不幸的是,在某些错误情况下,它坚持调用MessageBoxA,可能是为了报告发生了一些不好的事情.发生这种情况时,服务停止响应.我猜它正等着有人按Ok?

供应商无法为我更改代码.

有没有办法让这个调用成为无操作,所以我的代码可以自动处理这种情况?

编辑:可能很重要的是,在我的特定情况下,如果服务崩溃,服务将自动重启.对于在我的情况下显示MessageBox的情况,优雅(尽可能)和突然退出可能是最佳解决方案.

Han*_*ant 10

查看Microsoft Research的Detours.它允许您绕过任意Windows API函数.需要C/C++编程才能使其工作.你不需要太多.

  • @nobugz你就像一个图书馆.认真. (2认同)