2010-11-23 11 views
1

WebBrowserControlの現在のインスタンスのみのプロキシを設定しようとしています。ドキュメントはひどいですが、wininet.dllInternetSetOptionを呼び出すと、最初のパラメータとして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.IWebBrowser2internalとマークされています。 WebBrowserControlでのリフレクションを使用して、プライベートAxIWebBrowser2プロパティ値を取得できますが、そのタイプはSystem.__ComObjectとなります。 Windows.Formsアセンブリの内部にあるので、System.__ComObjectIWebBrowser2としてキャストできません。

AxIWebBrowser2オブジェクトのHWNDプロパティにC#を使用してアクセスする方法はありますか?

答えて

0

Hwndはあなたが探しているものを提供しません。これは、ブラウザコントロールのウィンドウハンドルです。何を探しているのWinInet HINTERNETハンドルです。私が知る限り、プログラムでアクセスする方法はありません。プロセス全体でオプションを設定し、IntPtr.ZeroをHINTERNETハンドルとして渡してみましたか?

+0

はい、それが動作します。しかし、あなたが言ったように、それはプロセス全体に基づいています。私は、複数のプロキシを使用するために複数のスレッドを生成する必要があります。代わりに、それぞれが異なるプロキシを使用する複数のプロセスを生成することになりますが、私は同様のことをやろうとしましたが、正しく機能していないようです。プロキシがグローバルに設定されているようです。 – hackerhasid

関連する問題