如何用VB设置IE代理IP并且马上生效?

时间:2022-05-26 16:57:32
为什么用VB改注册表,原本开着的IE窗口的网页打开www.ip138.com却IP没变,多设置几次IP也是没变,只对新开的IE窗口有效,设置一次IP,要新开一个IE窗口才行,有什么办法能不关IE窗口就能生效?


在IE上点INTERTNET 选项,再点连接,再点局域网设置,这样去设置的话,每次设置都是有效的,并且VB中的WEBBROWSER控件中的IP也会跟着改动,这个用IE开www.ip138.com和VB中webbrowser1的网址设成www.ip138.com。刷新一下就能看到效果

代码如下,看看什么原因?
以前看到是说要用sendmessage发送一个什么全局消息,不知是不是有用?


Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long                                                                   '   Note   that   if   you   declare   the   lpData   parameter   as   String,   you   must   pass   it   By   Value.
Private Const REG_DWORD As Long = 4
Private Const REG_SZ = 1
Const HKEY_CURRENT_USER = &H80000001
Sub 注册表设置IE代理(IPport As String)                  '设置代理服务器的地址跟端口
If IPport = "" Then Exit Sub
Dim str     As String
Dim SubKey  As String
Dim hKey    As Long
Dim address As String, port As String
Dim sz
sz = Split(IPport, ":")
address = sz(0)
port = sz(1)

str = Trim(address) & ":" & Trim(port)
SubKey = "Software\Microsoft\Windows\CurrentVersion\Internet Settings"
RegCreateKey HKEY_CURRENT_USER, SubKey, hKey
RegSetValueEx hKey, "ProxyServer", 0, REG_SZ, ByVal str, LenB(StrConv(str, vbFromUnicode)) + 1
RegCloseKey hKey
End Sub

  Sub 启用IE代理()
Dim SubKey     As String
Dim hKey     As Long

SubKey = "Software\Microsoft\Windows\CurrentVersion\Internet Settings"
RegCreateKey HKEY_CURRENT_USER, SubKey, hKey
RegSetValueEx hKey, "ProxyEnable", 0, REG_DWORD, 1&, 4
RegCloseKey hKey
End Sub

10 个解决方案

#1


设置方法:
sub test()
注册表设置IE代理 "113.76.29.202:9999"
启用IE代理
end sub

#2


如何用VB设置IE代理IP并且马上生效?
如何用VB设置IE代理IP并且马上生效?
就是这样用,我在VB中写代码改IE代理,WEBBROWSER控件中的IP却没变,要关了软件重开才能显示新的代理IP的IP,如果在IE上直接改,那VB上WEBBROWSER控件的IP却能同步更换。

#3


用InternetSetOption

#4


InternetSetOption好像没用的

#5


     Dim options As INTERNET_PROXY_INFO
     options.dwAccessType = INTERNET_OPEN_TYPE_PROXY
     options.lpszProxy = IpPort
     options.lpszProxyBypass = ""
     internetsetoption 0, internet_option_proxy, options, LenB(options)


我用的是这个,发现只是针对本进程上的WEBBROWSER控件有效,IP会变成代理IP
但是IE上却不受影响,IE上要是没启用代理,在本程序上启用了,IE还是没开
而且本程序设置的任何IP,在IE代理里面都没有改变过,这是什么原因?

1,如果想要对一个别的程序写的IE控件上更改代理,要咋设?,比方DELPHI,易语言等上面的WEBBROWSER控件,就是说只更改某个程序上面IE控件的代理,却不影响IE和别的程序的代理IP
2,如何更改IP能对所有IE及IE控件WEBBROWSER之类的都同步更改IP?
以上是2个相反用途的问题,有懂的不?

#6


这个问题不难呀,大家多发代码啊

#7


引用 4 楼 xiaoyao961 的回复:
InternetSetOption好像没用的

是你不会用

#8


InternetSetOption NULL,INTERNET_OPTION_SETTINGS_CHANGED,NULL,NULL 
InternetSetOption NULL, INTERNET_OPTION_REFRESH, NULL,NULL 

全部生效

#9


如何用VB设置IE代理IP并且马上生效?楼主做的能发来学习下吗?邮箱332565134@qq.com。谢谢!!!!!

#10


该回复于2015-01-24 09:37:16被管理员删除

#1


设置方法:
sub test()
注册表设置IE代理 "113.76.29.202:9999"
启用IE代理
end sub

#2


如何用VB设置IE代理IP并且马上生效?
如何用VB设置IE代理IP并且马上生效?
就是这样用,我在VB中写代码改IE代理,WEBBROWSER控件中的IP却没变,要关了软件重开才能显示新的代理IP的IP,如果在IE上直接改,那VB上WEBBROWSER控件的IP却能同步更换。

#3


用InternetSetOption

#4


InternetSetOption好像没用的

#5


     Dim options As INTERNET_PROXY_INFO
     options.dwAccessType = INTERNET_OPEN_TYPE_PROXY
     options.lpszProxy = IpPort
     options.lpszProxyBypass = ""
     internetsetoption 0, internet_option_proxy, options, LenB(options)


我用的是这个,发现只是针对本进程上的WEBBROWSER控件有效,IP会变成代理IP
但是IE上却不受影响,IE上要是没启用代理,在本程序上启用了,IE还是没开
而且本程序设置的任何IP,在IE代理里面都没有改变过,这是什么原因?

1,如果想要对一个别的程序写的IE控件上更改代理,要咋设?,比方DELPHI,易语言等上面的WEBBROWSER控件,就是说只更改某个程序上面IE控件的代理,却不影响IE和别的程序的代理IP
2,如何更改IP能对所有IE及IE控件WEBBROWSER之类的都同步更改IP?
以上是2个相反用途的问题,有懂的不?

#6


这个问题不难呀,大家多发代码啊

#7


引用 4 楼 xiaoyao961 的回复:
InternetSetOption好像没用的

是你不会用

#8


InternetSetOption NULL,INTERNET_OPTION_SETTINGS_CHANGED,NULL,NULL 
InternetSetOption NULL, INTERNET_OPTION_REFRESH, NULL,NULL 

全部生效

#9


如何用VB设置IE代理IP并且马上生效?楼主做的能发来学习下吗?邮箱332565134@qq.com。谢谢!!!!!

#10


该回复于2015-01-24 09:37:16被管理员删除