C# 如何终止来自服务的非托管消息框调用
我有一个调用非托管dll的服务。在某个代码路径上,它将打开一个消息框。因为它是一个服务,所以没有显示实际的窗口,但是线程仍然被阻塞C# 如何终止来自服务的非托管消息框调用,c#,windows-services,C#,Windows Services,我有一个调用非托管dll的服务。在某个代码路径上,它将打开一个消息框。因为它是一个服务,所以没有显示实际的窗口,但是线程仍然被阻塞 如何自动关闭该消息框?实际上,该消息框会显示,但不会显示在交互式窗口站上,因此任何登录用户都看不到。您有几个选择: 您可以使服务具有交互性。这将允许它向当前登录的用户显示一个消息框。MSDN有一些关于的信息 您可以钩住MessageBox导出并将其重定向到您自己的代码。这可以使用低级Windows API函数来完成 有趣的问题是,如果您计划从没有UI的服务中使用d
如何自动关闭该消息框?实际上,该消息框会显示,但不会显示在交互式窗口站上,因此任何登录用户都看不到。您有几个选择:
- 您可以使服务具有交互性。这将允许它向当前登录的用户显示一个消息框。MSDN有一些关于的信息
- 您可以钩住MessageBox导出并将其重定向到您自己的代码。这可以使用低级Windows API函数来完成
MessageBoxA
hook时,它非常简单,尽管有点晦涩。如果我没记错的话,我必须重定向一个指针,可能是加载到进程中的USER32.DLL的PE头导出表中的指针。还是在“坏”DLL的导入表中?