我正在使用第 3 方 dll (jlink.dll),一切都很好。唯一的问题是 jlink.dll 有时会显示一个窗口。我不想显示那些窗口。换句话说,假设 dll 的代码有方法:
// some method on jlink dll
public bool OppenConnection(string connectionString)
{
if(string.IsNullOrEmpty(connectionString)){
MessageBox.Show("SomeError"); // <-----------------------------
return false;
}
// some logic
return true;
}
当我从我的程序中调用该方法时,如果出现错误,jlink.dll 将显示一个窗口,我不希望这样。如果该方法返回 false,我可以自己显示一个窗口。所以我的问题是如何隐藏这些窗口?
这是我现在的解决方案:
我发现如果我从隐藏进程执行该方法(OppenConnection),则从 dll 显示的窗口也将被隐藏。这种方法的问题是现在我需要一个更多的过程。一个不是隐藏的(我的 gui),另一个是隐藏的调用 jlink.dll。我使用 namedPipes 在这两个进程之间交换消息。事情变得越来越复杂,如果我可以使用一个过程而不是两个过程会很好。此外,我必须有一个单独的线程来关闭 jlink.dll 创建的所有隐藏窗口。如果我可以像隐藏进程一样从非隐藏进程执行 jlink.dll 方法,那就太好了。这样我可以有一个进程而不是两个,删除所有命名管道,事情会简单得多。