似乎在App未完成加载时调用P-Invoke会使其显示相关函数的错误。
例如,目前我正在尝试通过LoadLibrary在启动时加载各种DLL并测试它们是否已导出特定功能。
如果我在应用程序完成其加载过程时这样做,则没有给出错误(只是结果是0并且我可以通过GetLastError检查它们),如果我在启动时执行它(例如表单的Load事件)它会发出错误(例如缺少模块等)。
有一种方法可以将这些错误静音吗?
请注意,这些不是例外,但系统消息框和try ... catch在这里不起作用。
感谢。
答案 0 :(得分:1)
从调用LoadLibrary()看到消息框并没有多大意义。看看P / Invoking SetErrorMode()与SEM_NOOPENFILEERRORBOX是否解决了您的问题。使用Shown而不是Load事件也值得一试。
答案 1 :(得分:0)
如果要检测/测试各种DLL有特定的入口点,请使用GetProcAddress()API。如果GetProcAddress()为特定入口点返回0,则该DLL中不存在该入口点。
答案 2 :(得分:0)
我没有尝试的代码,但我觉得你得到一个消息框,因为异常被抛出在一个单独的线程中,而不是由你的try和catch块处理。您可以尝试在应用程序开始时连接这两个事件,并尝试查看此处的事件处理程序是否捕获到异常。
Application.ThreadException
AppDomain.CurrentDomain.UnhandledException