【发布时间】:2010-02-01 20:04:17
【问题描述】:
我正在将第三方基于 C 的 SDK 集成到我的 .NET 应用程序中。该应用程序将作为 Windows 服务在服务器上运行,因此它不应以任何方式与用户交互。
不幸的是,在某些错误情况下,它坚持调用 MessageBoxA,大概是为了报告发生了不好的事情。发生这种情况时,服务将停止响应。我猜是在等人按确定?
不可能让供应商为我更改他们的代码。
有没有办法可以将此调用变为无操作,以便我的代码可以自动处理这种情况?
编辑:可能很重要的一点是,在我的特定情况下,如果服务崩溃,它会自动重启。对于在我的情况下显示 MessageBox 的情况,优雅(尽可能)和突然退出可能是最佳解决方案。
【问题讨论】:
-
我知道这不是一个真正的答案,但找到一个更好的图书馆/服务。如果图书馆有这类问题,它可能会有更多问题。
-
我记得我的一个白痴前同事在一个消息框中输入了一个已知是服务的代码。我告诉他删除它,但他仍然把它留在里面,我们不得不重新发布软件......不好。
-
不,说它不是来自图书馆的 MessageBox!!!!好问题
-
您可以使用一些技巧,例如生成一个线程来检查对话窗口并发送关闭消息,但正确的答案是 C. Ross 的:找到更好的 SDK。
-
@Steven - 在没有用户的情况下运行时你能可靠地做到这一点吗?在所有操作系统上?我不是说你不能——我只是不确定它是不是被切干了。