0

サードパーティの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から表示されるウィンドウも非表示になることを発見しました。このアプローチの問題は、もう1つのプロセスが必要になることです。非表示になっていないもの(私のGUI)、非表示になっているもので、そのjlink.dllを呼び出します。私はnamedPipesを使用して、これら2つのプロセス間でメッセージを交換しました。物事は複雑になりつつあり、2つではなく1つのプロセスを使用できれば素晴らしいと思います。また、jlink.dllによって作成されたすべての非表示のウィンドウを閉じる別のスレッドが必要です。非表示のプロセスが非表示になっていないプロセスから実行するのと同じようにjlink.dllメソッドを実行できれば、すばらしいでしょう。そうすれば、2つではなく1つのプロセスを使用して、名前付きパイプをすべて削除すると、作業がはるかに簡単になります。

4

1 に答える 1

0

メソッド内のすべてのロジックではなく、メソッドの特定の部分を呼び出すために制御していない DLL を呼び出したい。いくつかのオプションがあります: 1) それをそのまま使う、2) 必要な機能に基づいて独自のコードをロールする (リフレクターのようなものを使用する)、または 3) リフレクターのようなものを使用して、内部を公開するメソッドがあるかどうかを確認する1と2の組み合わせができるようにしたかったのです。

何か足りない場合はお知らせください;-)

于 2013-02-19T16:13:06.817 に答える