【发布时间】:2018-12-30 10:02:01
【问题描述】:
我对 Visual Basic 不太了解,对此我深表歉意,但我对 Java 和其他一些编程语言有基本的了解,所以我并不完全是新手。
我想制作一个程序,该程序使用从文本文件加载的代理连接到网站,但是当我调试它时,它给了我一堆不同的错误消息,例如:
- HTTP 错误 503。服务不可用
- 找不到网页
等等
这是我将代理加载到列表框中的代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
OpenFileDialog1.ShowDialog()
streamer = IO.File.OpenText(OpenFileDialog1.FileName)
Dim mystring() As String = streamer.ReadToEnd.Split(vbNewLine)
ListBox1.Items.AddRange(mystring)
End Sub
这是使用代理的代码:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Button2.Enabled = False
Button1.Enabled = False
For Each item In ListBox1.Items
UseProxy(item.ToString)
Label4.Text = item
WebBrowser1.Navigate(TextBox3.Text)
pause(10000)
Next
End Sub
这是使用代理:
Private Sub UseProxy(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
struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY
struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy)
struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local")
Dim intptrStruct As IntPtr = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI))
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
我在按钮 2 click sub 的末尾也收到错误提示
实际上有时当我关闭程序时,我在按钮结束时在 Visual Studio 中出现错误2 click sub (Next)
System.InvalidOperationException: '此枚举器绑定的列表已被修改。只有在列表不变的情况下才能使用枚举器。'
【问题讨论】:
-
您需要使用
InternetSetOption来传播与代理设置相关的注册表值已更改的(系统)消息。使用Registry Class 修改这些注册表设置。 (ProxyServer[string] = "Proxy:Port") 和ProxyEnable[dword] -
您能详细说明一下吗?对不起,我没有写 useproxy 代码。
-
您需要设置这些注册表值,然后
InternetSetOption必须生成一个“广播”以告知这些设置已更改,并生成一个“建议”,感兴趣的应用程序应该刷新他们对此事的了解.例如将INTERNET_OPTION_SETTINGS_CHANGED = 39消息和INTERNET_OPTION_REFRESH = 37消息发送到hInternet=IntPtr.Zero。如果您需要示例,请告诉我。 -
是的,我想要一个例子,对不起
标签: vb.net winforms winapi webbrowser-control proxies