2011-01-31 16 views
0

複数の要求(Webブラウザーコントロールを使用)を同時に実行できるプログラムを使用して、異なるプロキシ設定で特定のテストを実行しようとしています。 私が今使っているのは1つのWebブラウザコントロールだけですが、複数のサイドバイサイドを実行する方法のアドバイスを求めています。異なるプロキシで複数のWebブラウザーコントロールを実行する

<Runtime.InteropServices.DllImport("wininet.dll", SetLastError:=True)> _ 
Private Shared Function InternetSetOption(ByVal hInternet As IntPtr, ByVal dwOption As Integer, ByVal lpBuffer As IntPtr, ByVal lpdwBufferLength As Integer) As Boolean 
End Function 

Public Structure Struct_INTERNET_PROXY_INFO 
    Public dwAccessType As Integer 
    Public proxy As IntPtr 
    Public proxyBypass As IntPtr 
End Structure 

Private Sub RefreshIESettings(ByVal strProxy As String) 
    Const INTERNET_OPTION_PROXY As Integer = 38 
    Const INTERNET_OPEN_TYPE_PROXY As Integer = 3 

    Dim struct_IPI As Struct_INTERNET_PROXY_INFO 

    ' Filling in structure 
    struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY 
    struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy) 
    struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local") 

    ' Allocating memory 
    Dim intptrStruct As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI)) 

    ' Converting structure to IntPtr 
    Marshal.StructureToPtr(struct_IPI, intptrStruct, True) 

    Dim iReturn As Boolean = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, System.Runtime.InteropServices.Marshal.SizeOf(struct_IPI)) 
End Sub 

Private Function loadpage() 
    sInputLine = srFileReader.ReadLine() 
    Debug.WriteLine("Starting Proxy " & sInputLine) 
    RefreshIESettings(sInputLine) 
    Timer1.Enabled = True 
    Timer1.Interval = My.Settings.timeout * 1000 
    'set label 
    Label3.Text = "Attempting: " & sInputLine 
    Label3.ForeColor = Color.Black 
    Label3.Visible = True 
    WebBrowser1.Navigate("http://www.MYSERVER.com") 
    Return True 
End Function 

DocumentCompletedイベント内のタイマーからloadpage()がループされています。

お手伝いをしてください。私は解決のために - 日を検索しました。

+0

IntPtr.ZeroをInternetSetOption()に渡すと、マシンワイドの設定が変更されます。 Internet Explorerがセッションごとにそのオプションを変更するために使用するHINTERNETハンドルを取得する必要があります。それは可能ではない、それを公開していない。 –

答えて

関連する問題