以上代码好像不行,
我把setProxy改写为:
Private Function SetProxy(ByVal strProxy As String, ByVal local As String) As Boolean
Dim bReturn As Boolean
Dim list As New INTERNET_PER_CONN_OPTION_LIST
Dim dwBufSize As Integer = Marshal.SizeOf(list)
Dim opts(3) As INTERNET_PER_CONN_OPTION
Dim opt_size As Integer = Marshal.SizeOf(opts(0))
Debug.WriteLine("sizeof(option) " + opt_size.ToString)
list.dwSize = dwBufSize
list.pszConnection = ControlChars.NullChar
list.dwOptionCount = 3
Debug.WriteLine("sizeof list " + dwBufSize.ToString())
'set flags
opts(0).dwOption = MyOptions.INTERNET_PER_CONN_FLAGS
opts(0).dwValue = MyOptions.PROXY_TYPE_DIRECT Or MyOptions.PROXY_TYPE_PROXY
'set proxyname
opts(1).dwOption = MyOptions.INTERNET_PER_CONN_PROXY_SERVER
opts(1).pszValue = Marshal.StringToHGlobalAnsi(strProxy)
'set override
opts(2).dwOption = MyOptions.INTERNET_PER_CONN_PROXY_BYPASS
opts(2).pszValue = Marshal.StringToHGlobalAnsi(local)
Dim b(3 * opt_size) As Byte
opts(0).GetBytes().CopyTo(b, 0)
opts(1).GetBytes().CopyTo(b, opt_size)
opts(2).GetBytes().CopyTo(b, 2 * opt_size)
Dim ptr As IntPtr = Marshal.AllocCoTaskMem(3 * opt_size)
Marshal.Copy(b, 0, ptr, 3 * opt_size)
list.pOptions = ptr
'set the options on the connection
bReturn = InternetSetOption(IntPtr.Zero, MyOptions.INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize)
If Not bReturn Then
Debug.WriteLine(GetLastError)
End If
Marshal.FreeHGlobal(opts(1).pszValue)
Marshal.FreeHGlobal(opts(2).pszValue)
Marshal.FreeCoTaskMem(ptr)
Return bReturn
End Function
再调用,
Dim bol As Boolean = SetProxy("206.78.29.149:3128", "206.78.29.149:3128")
If bol = True Then
MsgBox("true")
Else
MsgBox("false")
End If
WB.Navigate("
http://www.pwsite.net/ip/index.asp")
proxy还是没有变。请教以上代码有什么问题吗