是否可以从现有 DLL 中阻止消息框?

发布于 2024-10-11 06:51:25 字数 96 浏览 6 评论 0原文

我正在使用 C# winforms 应用程序,我是项目中的 dll,当从该 dll 调用该函数时,我从中得到不需要的 MessageBox。是否可以阻止该 MessageBox?

I am working with C# winforms Application i am dll in my project when call that function from that dll i get unwanted MessageBox from that .Is it possible to block that MessageBox?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

仄言 2024-10-18 06:51:25

如果到了紧要关头,您可以启动一个线程,使用 WinAPI 或库按标题杀死所有打开的窗口。

我会诉诸不太严厉的机制,例如首先更改 dll 或向正确的人员提出更改请求。

If push comes to shove, you can fire up a thread that kills off any open windows by title using WinAPI or libraries.

I'd resort to less harsh mechanisms like changing the dll first or putting a change req to the right people.

无畏 2024-10-18 06:51:25

如果这是第三方 dll,则没有很好的选择来摆脱消息框。

但是,由于 C# 被编译为 IL,因此您可以查看字节代码并删除对 MessageBox.Show 的调用,或将其替换为对 Trace.WriteLine 的调用。您可以使用 SDK 附带的 ildasm.exe/ilasm.exe 工具来执行此操作。

There is no nice option to get rid of the message box if this is a third-party dll.

However, as C# is compiled to IL you can view the byte code and remove the call to MessageBox.Show or replace it with a call to Trace.WriteLine. You can do this e.g. using the ildasm.exe/ilasm.exe tools coming with the SDK.

人事已非 2024-10-18 06:51:25

您可以使用十六进制编辑器、调试器或某些资源查看器研究该 dll,以了解如何创建对话框,然后订阅该 Windows 事件(如 OnCreate - 浏览 WinAPI 文档以获取有关 Windows 创建函数的信息)。在您的事件处理程序中尝试抑制对话框并查看 dll 函数是否对对话框未显示这一事实感到高兴

You can study that dll with hex-editor, debugger or some resource viewer to find out how dialog box is created and then subscribe to that Windows event (Like OnCreate - surf WinAPI docs for info on Windows creation functions). In your event handler try to suppress dialog box and see if dll function is happy about the fact that dialog wasn't shown

叫嚣ゝ 2024-10-18 06:51:25

如果您的 dll 是托管代码,您可以反编译它并删除 MessageBox 调用,如 0xA3 建议的那样。如果您的 dll 是本机的,则可以使用 API 挂钩。您可以在此处找到 WinAPI 挂钩示例。它是 C++ 语言,但可以轻松转换为 C#。

If your dll is managed code you can decompile it and remove MessageBox call like 0xA3 suggested. If your dll is native you can use API hooking. Example of WinAPI hooking you can find here. It's in C++, but can be easily translated to C#.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文