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

专注VB编程开发20年 2013-08-02 11:22:45
为什么用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
...全文
801 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingyikong 2014-02-24
  • 打赏
  • 举报
回复
楼主做的能发来学习下吗?邮箱332565134@qq.com。谢谢!!!!!
AddDark 2013-08-12
  • 打赏
  • 举报
回复
InternetSetOption NULL,INTERNET_OPTION_SETTINGS_CHANGED,NULL,NULL InternetSetOption NULL, INTERNET_OPTION_REFRESH, NULL,NULL 全部生效
AddDark 2013-08-11
  • 打赏
  • 举报
回复
引用 4 楼 xiaoyao961 的回复:
InternetSetOption好像没用的
是你不会用
  • 打赏
  • 举报
回复
这个问题不难呀,大家多发代码啊
  • 打赏
  • 举报
回复
     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个相反用途的问题,有懂的不?
  • 打赏
  • 举报
回复
InternetSetOption好像没用的
AddDark 2013-08-03
  • 打赏
  • 举报
回复
用InternetSetOption
  • 打赏
  • 举报
回复
设置方法: sub test() 注册表设置IE代理 "113.76.29.202:9999" 启用IE代理 end sub
  • 打赏
  • 举报
回复


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

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧