我正在将第三方基于 C 的 SDK 集成到我的 .NET 应用程序中。该应用程序将作为 Windows 服务在服务器上运行,因此它不应以任何方式与用户交互。
不幸的是,在某些错误情况下,它坚持调用 MessageBoxA,大概是为了报告发生了不好的事情。发生这种情况时,服务将停止响应。我猜它正在等待有人按确定?
不可能让供应商为我更改他们的代码。
有没有办法可以将此调用变为无操作,以便我的代码可以自动处理这种情况?
编辑:可能很重要的是,在我的特定情况下,如果服务崩溃,服务将自动重新启动。对于在我的案例中显示 MessageBox 的情况,优雅(尽可能)和突然退出可能是最佳解决方案。
最佳答案
查看 Detours from Microsoft Research .它允许您绕过任意 Windows API 函数。但是,需要 C/C++ 编程才能使其工作。你不需要太多。
关于.net - 如何防止第三方库显示 MessageBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2179672/