WebBrowserコントロールでProxyを通すには?

解決


謝紗  2010-08-21 00:02:46  No: 102521  IP: [192.*.*.*]

VB.net 2008でブラウザもどきを作成しております。
インターネットオプションの設定に依存せずにproxyの設定を行いたいので
UrlMkSetSessionOptionを使用しているのですが、直接接続になってしまいます。

どなたか御教示ください。

    Public Declare Sub UrlMkSetSessionOption Lib "urlmon.dll" _
                                            (ByVal dwOption As Integer, ByVal pBuffer As INTERNET_PROXY_INFO, _
                                             ByVal dwBufferLength As Integer, _
                                             ByVal dwReserved As Integer)

    Public Enum InternetOpenType
        INTERNET_OPEN_TYPE_PRECONFIG = 0
        INTERNET_OPEN_TYPE_DIRECT = 1
        INTERNET_OPEN_TYPE_PROXY = 3
        INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4
    End Enum

    Public Structure INTERNET_PROXY_INFO
        Public InternetOpenType As InternetOpenType
        Public proxy As String
        Public proxyBypass As String
    End Structure

    Public Sub InternetOptionProxy(ByVal nOpenType As InternetOpenType, ByVal proxy As String, ByVal proxyBypass As String)
        Const INTERNET_OPTION_PROXY As Integer = 38
        Dim ipi As INTERNET_PROXY_INFO

        ipi.InternetOpenType = nOpenType
        ipi.proxy = proxy
        ipi.proxyBypass = proxyBypass

        Call UrlMkSetSessionOption(INTERNET_OPTION_PROXY, ipi, Marshal.SizeOf(ipi), 0)
    End Sub




    Private Sub wbsDisplay_Navigating(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserNavigatingEventArgs) Handles wbsDisplay.Navigating
        Call InternetOptionProxy(InternetOpenType.INTERNET_OPEN_TYPE_PROXY, "localhost:8080", "")
    End Sub

編集 削除
熊谷隆史  2010-08-21 08:01:07  No: 102522  IP: [192.*.*.*]

> UrlMkSetSessionOption
を、BeforeNavigate/BeforeNavigate2イベント内で呼びます。

編集 削除
謝紗  2010-08-21 21:58:51  No: 102523  IP: [192.*.*.*]

熊谷隆史さん
回答ありがとうございます。
.net2008のwebBrowserコントロールにはBeforeNavigateイベントがないため
Navigatingイベントを使用しています。

USER_AGENTはNavigatingイベントで変更できたのですが...

編集 削除
魔界の仮面弁士  2010-08-22 12:45:03  No: 102524  IP: [192.*.*.*]

> VB.net 2008でブラウザもどきを作成しております。
ここは、VB2〜VB6専用の掲示板です。
VB2008 の投稿は隣の掲示板にお願いします。


一応ヒント;宣言自体から見直す必要があるかと思います。

・第2引数を、ByVal/Class または ByRef/Structure または ByVal/IntPtr に変更してみましょう。
・UrlMkSetSessionOption の戻り値(HRESULT)も確認できるようにしておきましょう。
・戻り値が S_OK で無い場合は、Err.LastDllError/Marshal.GetLastWin32Error も確認を。

編集 削除
謝紗  2010-08-23 14:07:40  No: 102525  IP: [192.*.*.*]

魔界の仮面弁士さん
>VB2008 の投稿は隣の掲示板にお願いします

申し訳ありません。

下記に新規質問を上げ
http://madia.world.coocan.jp/cgi-bin/vbnet/wwwlng.cgi?print+201008/10080011.txt
当質問は解決済みとしました。

編集 削除