从引用的程序集中抑制MessageBox

时间:2009-02-16 19:56:25

标签: assemblies reference

如何抑制MessageBox显示来自对我不拥有的程序集的引用(也没有代码)?

例如,我的应用程序(MyApplication.exe)引用了由其他人编写的程序集(SomeoneElsesAssembly.dll)。在这个程序集里​​面,我正在调用一个静态方法,它可以执行它所设想的,但也会触发我想要抑制的MessageBox。

我认为有一种方法可以在非交互模式下引用一个程序集或类似的东西。

感谢您的帮助。

-Jessy Houle

4 个答案:

答案 0 :(得分:2)

您所问的基本上是“如何修改第三方程序集中代码的行为”。

没有拆卸/重新组装,答案是“你不能”。

有一些icky选项;

使用托管代码,您始终拥有某种形式的源代码。如果函数有点自包含,您可以使用Reflector将其复制到您自己的代码中

你可以有第二个线程等到消息框出现,然后自动关闭它。

答案 1 :(得分:2)

article可以提供帮助

答案 2 :(得分:1)

  

我认为有一种方法可以在非交互模式下引用一个程序集或类似的东西。

我相信可以在非交互模式下运行进程(例如Windows服务),但程序集会加载到进程中,并且与进程中的其他程序集具有相同的交互级别。

因此,要么反汇编 - 重新组装,要么将Windows消息直接发送到框中以自动关闭它。

答案 3 :(得分:0)

基本上你问是否可以引用一个调用MessageBox()的程序集,并且代码实际上没有显示消息框。遗憾的是答案是否定的。

最好的办法是在屏幕显示后使用屏幕抓取功能关闭消息框。这篇文章有一些关于如何关闭InProc消息框的示例代码。 http://www.codeproject.com/KB/dialog/AutoCloseMessageBox.aspx