我有个程序,内置的WebBrowser必须能直接访问某个站点,不能绕代理,所以想再程序中能检查并更改IE的代理设置。
如果不能更改,提示用户手动更改也可以

解决方案 »

  1.   

    http://search.csdn.net/Expert/topic/2054/2054869.xml?temp=.7719232
      

  2.   

    这个是注册表键值的,具体的我忘记了,可以查一下找到了Option Explicit
    Public Enum REG_TOPLEVEL_KEYS
     HKEY_CLASSES_ROOT = &H80000000
     HKEY_CURRENT_CONFIG = &H80000005
     HKEY_CURRENT_USER = &H80000001
     HKEY_DYN_DATA = &H80000006
     HKEY_LOCAL_MACHINE = &H80000002
     HKEY_PERFORMANCE_DATA = &H80000004
     HKEY_USERS = &H80000003
    End Enum
    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 RegCloseKey Lib _
       "advapi32.dll" (ByVal Hkey 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
    Private Const REG_SZ = 1Private Function WriteStringToRegistry(Hkey As _
      REG_TOPLEVEL_KEYS, strPath As String, strValue As String, _
      strdata As String) As Boolean
    Dim bAns As Boolean
    On Error GoTo ErrorHandler
       Dim keyhand As Long
       Dim r As Long
       r = RegCreateKey(Hkey, strPath, keyhand)
       If r = 0 Then
            r = RegSetValueEx(keyhand, strValue, 0, _
               REG_SZ, ByVal strdata, Len(strdata))
            r = RegCloseKey(keyhand)
        End If
        
       WriteStringToRegistry = (r = 0)
    Exit Function
    ErrorHandler:
        WriteStringToRegistry = False
        Exit Function
        
    End Function'把长整型数值写入注册表
    Private Function WriteLongToRegistry(Hkey As REG_TOPLEVEL_KEYS, _
        strPath As String, strValue As String, longdata As Long) As Boolean
    Dim bAns As Boolean
    On Error GoTo ErrorHandler
       Dim keyhand As Long
       Dim r As Long
       '建立键
       r = RegCreateKey(Hkey, strPath, keyhand)
       If r = 0 Then
       '成功
       '设置键值
            r = RegSetValueEx(keyhand, strValue, 0, REG_SZ, ByVal longdata, 4)
            '关闭键
            r = RegCloseKey(keyhand)
        End If
        
       WriteLongToRegistry = (r = 0)
    Exit Function
    ErrorHandler:
        WriteLongToRegistry = False
        Exit Function
        
    End FunctionPrivate Sub Command1_Click()
        If WriteStringToRegistry(HKEY_CURRENT_USER, _
            "Software\Microsoft\Windows\CurrentVersion\Internet Settings", _
            "ProxyServer", Text1) And _
            WriteLongToRegistry(HKEY_CURRENT_USER, _
            "Software\Microsoft\Windows\CurrentVersion\Internet Settings", _
            "ProxyEnable", 1&) Then
            MsgBox "设置代理成功"
        Else
            MsgBox "设置代理失败"
        End If
    End Sub
      

  3.   

    三楼原代码是可以设置代理,但是得重启浏览器才可生效。其实微软提供了一个api可以完成,只是不知道为什么总是调用失败,这里有个例子,你自己去瞧瞧吧
      

  4.   

    看这里 http://community.csdn.net/Expert/TopicView.asp?id=3770106
      

  5.   

    http://community.csdn.net/Expert/topic/3768/3768688.xml?temp=.2611048
      

  6.   

    上面的我都试过了,都不行,看看着个吧http://www.vbip.com/forum/files/webbrowser_proxy.zip 
    是通过api函数InternetSetOption,实现的