WebBrowserControlの現在のインスタンスのみのプロキシを設定しようとしています。ドキュメントはひどいですが、wininet.dll
のInternetSetOption
を呼び出すと、最初のパラメータとしてWebBrowserControlで使用される内部ブラウザにIntPtrハンドルを渡すと、メソッドは現在のインスタンスにのみ影響します(このメソッドを使用してプロキシを設定できます)。 http://msdn.microsoft.com/en-us/library/aa385114(v=VS.85).aspx)。ただし、WebBrowserControlはこのハンドルにアクセスする手段を提供していません。私はグーグルで何時間も探索していましたが、これは多くの人々にとって非常に役に立ちますが、誰もまだそれを理解していないようです。WebBrowserControlのAxIWebBrowser2ハンドルをInternetSetOptionで使用し、COMでSystem .__ ComObjectを発行します。
WebBrowserControlには、ハンドルが必要なCOMオブジェクトであるAxIWebBrowser2というプロパティがあります。このために使用するインタフェースのMSはUnsafeNativeMethods.IWebBrowser2
と呼ばれ、HWND
というプロパティがあります。これは私が必要と考えるものです。ただし、UnsafeNativeMethods.IWebBrowser2
はinternal
とマークされています。 WebBrowserControlでのリフレクションを使用して、プライベートAxIWebBrowser2
プロパティ値を取得できますが、そのタイプはSystem.__ComObject
となります。 Windows.Forms
アセンブリの内部にあるので、System.__ComObject
をIWebBrowser2
としてキャストできません。
AxIWebBrowser2
オブジェクトのHWND
プロパティにC#を使用してアクセスする方法はありますか?
はい、それが動作します。しかし、あなたが言ったように、それはプロセス全体に基づいています。私は、複数のプロキシを使用するために複数のスレッドを生成する必要があります。代わりに、それぞれが異なるプロキシを使用する複数のプロセスを生成することになりますが、私は同様のことをやろうとしましたが、正しく機能していないようです。プロキシがグローバルに設定されているようです。 – hackerhasid