运行dll方法隐藏

时间:2013-02-19 15:59:36

标签: c# dll process hidden

我使用的是第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方法就好,就像隐藏进程从未隐藏的进程那样执行这样我可以有一个进程而不是两个进程,删除所有命名的管道和事情会简单得多。

1 个答案:

答案 0 :(得分:0)

您希望调用您无法控制的DLL来调用方法的特定部分,但不能调用方法中的所有逻辑。你有几个选择:1)与它一起生活,2)根据你想要的功能滚动自己的代码(使用类似反射器的东西),或者3)使用像反射器这样的东西来查看是否有任何暴露内部的方法你确实想要这样你可以做1和2的组合。

如果我遗失某些东西,请告诉我; - )