我正在使用C#winforms应用程序我在我的项目中dll从该dll调用该函数时,我从那里得到了不需要的MessageBox。是否可以阻止该MessageBox?
答案 0 :(得分:2)
如果push推进,你可以启动一个线程,使用WinAPI或库按标题杀掉任何打开的窗口。
我会采用不那么苛刻的机制,例如首先更改dll或将更改请求发送给合适的人。
答案 1 :(得分:1)
如果这是第三方dll,没有很好的选择来摆脱消息框。
但是,当C#编译为IL时,您可以查看字节代码并删除对MessageBox.Show
的调用,或者通过调用Trace.WriteLine
替换它。你可以这样做,例如使用SDK附带的ildasm.exe
/ ilasm.exe
工具。
答案 2 :(得分:0)
您可以使用十六进制编辑器,调试器或某些资源查看器来研究该dll,以了解如何创建对话框,然后订阅该Windows事件(如OnCreate - 浏览WinAPI文档以获取有关Windows创建函数的信息)。在你的事件处理程序中尝试禁止对话框,看看dll函数是否对未显示对话框的事实感到高兴
答案 3 :(得分:0)
如果您的dll是托管代码,您可以反编译它并删除MessageBox调用,如建议的0xA3。如果您的dll是原生的,则可以使用API hooking。 WinAPI挂钩示例您可以找到here。它是用C ++编写的,但可以很容易地翻译成C#。