2

最初の注意点として、私はac#プログラマーではありませんが、chromeとfirefox用のアドオン/拡張機能を開発しました。仕事関連のプロジェクトでは、InternetExplorer用の3番目の拡張機能が必要です。

IEのBHO拡張機能からInternetExplorerインスタンスにアクセスしようとしています。私はリソースとして以下を使用しています:

したがって、基本的なアドオンが機能し、ウィンドウの読み込みが完了したときにjavascriptアラートボックスを挿入してテストします。

私のアドオンは最終的に2つのタブ(1つはホストとして機能し、もう1つはスレーブとして機能する)を管理する必要があり、最後に述べたリンクはそれを扱いますが、ブラウザーのHWNDハンドルが必要であり、それを取得する方法がわかりません。

WebBrowserメンバーの下にあるように見えます.Parentが、IEハンドルを取得するためにキャストする必要があるクラスがわかりません。

4

1 に答える 1

1

したがって、マシン上ですでに実行されているブラウザやプロセスのハンドルを取得するには、次の場所でFindWindowメソッドを使用できます。

User32.dll

次の方法でクラス内にそれへの参照を含めることによって:

    // Find by class name and window name
    [DllImport("user32.dll", SetLastError = true)]
    static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

    // Find window name only
    [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
    static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);

次のように、クラス内でそれらを呼び出すことができます。

    public FindMyWindow(string classname, string windowName)
    {
        IntPtr hWnd = FindWindow(classname, null);
        // Or do
        hWnd = FindWindowByCaption(IntPtr.Zero, windowName);
    }

使用できます

Spy ++

必要に応じてクラス名を検索するためのVisualStudio2010が付属しています。

于 2012-06-19T01:39:09.740 に答える