c# - 通过互操作调用 dll 函数时,是否有捕获或终止弹出窗口的方法?

标签 c# interop dllimport messagebox

我正在编写一个 C# 应用程序,它在使用非托管代码编写的 DLL 中调用一个函数。

在大多数情况下,调用工作正常,被调用的函数返回一个整数值,指定成功或少量错误代码。但是,对于一些错误代码,DLL 似乎还会弹出一个消息框,提供有关该错误的更多信息。

我无法知道对于给定的函数调用是否会发生这种情况,并且不想用这些消息框来打扰用户,因为有时我会在批处理过程中调用此函数数千次并且我宁愿用户不必按“确定”键,无论发生多少次失败。

是否有任何方法可以确定在给定调用后显示了消息框,或者通常禁用或不允许在给定调用期间显示任何窗口或表单?这似乎不太可能,但我想无论如何我都会问。

谢谢, M先生

最佳答案

正如您所怀疑的,您将无法从您未编写的代码中抑制弹出窗口,除非调用具有可以为您执行此操作的特定参数。消息框是否与特定错误代码相关联?

有一些可用的程序可以监视您的计算机是否有特定的窗口,并在它们出现时单击它们上的按钮,当然要求用户也运行它会有点负担。 [编辑:Joe 指出您可以在单独的线程上自己完成此操作。也是一种选择。]

在使用依赖项时总是需要权衡取舍,您必须在依赖项的有用性和必要性与它可能需要您做出的妥协之间取得平衡。

关于c# - 通过互操作调用 dll 函数时,是否有捕获或终止弹出窗口的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5979572/

相关文章:

c# - 银光 2 : INotifyPropertyChanged on dynamically created object?

c# - Entity Framework 试图在数据库中将空字符串保存为 null

c# - 在 C# 中为客户端和服务器使用 C++ COM 接口(interface)

c# - (UserControl with SQLite) ---> 无法创建组件 'UserControl1',System.DllNotFound Excpetion,无法加载 Sqlite.interop.dll

c# - pinvoke c 函数 - System.BadImageFormatException

c++ - __declspec(dllimport/dllexport) 和继承

c# - 如何使用 AutoMapper 为特定映射映射空值?

javascript - 使用 JavaScript json 文件初始化 C# 字典的正确方法?

c# - 在 IIS 网络服务器上调用 Delphi DLL 的 ASP.NET 网络应用程序在返回 PChar 字符串时锁定

c# - 使用 DllImport 将 C# byte[] 编码到 C++ DLL