1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Here Some vb6 code to set proxy with out have to restart the webbrowser

Discussion in 'Visual Basic 6' started by pussyback, May 28, 2008.

  1. pussyback

    pussyback Regular Member

    Joined:
    Apr 5, 2008
    Messages:
    402
    Likes Received:
    79
    Code:
    'Module
    
    Option Explicit
    
     
    
    Private Type INTERNET_PER_CONN_OPTION
    
        dwOption As Long
    
        dwValue1 As Long
    
        dwValue2 As Long
    
    End Type
    
    Private Type INTERNET_PER_CONN_OPTION_LIST
    
        dwSize As Long
    
        pszConnection As Long
    
        dwOptionCount As Long
    
        dwOptionError As Long
    
        pOptions As Long
    
    End Type
    
    Private Const INTERNET_PER_CONN_FLAGS As Long = 1
    
    Private Const INTERNET_PER_CONN_PROXY_SERVER As Long = 2
    
    Private Const INTERNET_PER_CONN_PROXY_BYPASS As Long = 3
    
    Private Const PROXY_TYPE_DIRECT As Long = &H1
    
    Private Const PROXY_TYPE_PROXY As Long = &H2
    
    Private Const INTERNET_OPTION_REFRESH As Long = 37
    
    Private Const INTERNET_OPTION_SETTINGS_CHANGED As Long = 39
    
    Private Const INTERNET_OPTION_PER_CONNECTION_OPTION As Long = 75
    
    Private Declare Function InternetSetOption _
    
            Lib "wininet.dll" Alias "InternetSetOptionA" ( _
    
            ByVal hInternet As Long, ByVal dwOption As Long, _
    
            lpBuffer As Any, ByVal dwBufferLength As Long) As Long
    
     
    
    ' Set Proxy
    
     
    
    Public Function SetConnectionOptions(ByVal conn_name As String, ByVal proxy_full_addr As String) As Boolean
    
    ' conn_name: active connection name. (LAN = "")
    
    ' proxy_full_addr : eg "193.28.73.241:8080"
    
    Dim list As INTERNET_PER_CONN_OPTION_LIST
    
    Dim bReturn As Boolean
    
    Dim dwBufSize As Long
    
    Dim options(0 To 2) As INTERNET_PER_CONN_OPTION
    
    Dim abConnName() As Byte
    
    Dim abProxyServer() As Byte
    
    Dim abProxyBypass() As Byte
    
        
    
        dwBufSize = Len(list)
    
        
    
        ' Fill out list struct.
    
        list.dwSize = Len(list)
    
        
    
        ' NULL == LAN, otherwise connection name.
    
        abConnName() = StrConv(conn_name & vbNullChar, vbFromUnicode)
    
        list.pszConnection = VarPtr(abConnName(0))
    
        
    
        ' Set three options.
    
        list.dwOptionCount = 3
    
     
    
        ' Set flags.
    
        options(0).dwOption = INTERNET_PER_CONN_FLAGS
    
        options(0).dwValue1 = PROXY_TYPE_DIRECT Or PROXY_TYPE_PROXY
    
     
    
        ' Set proxy name.
    
        options(1).dwOption = INTERNET_PER_CONN_PROXY_SERVER
    
        abProxyServer() = StrConv(proxy_full_addr & vbNullChar, vbFromUnicode)
    
        options(1).dwValue1 = VarPtr(abProxyServer(0))  '//"http://proxy:80"
    
     
    
        ' Set proxy override.
    
        options(2).dwOption = INTERNET_PER_CONN_PROXY_BYPASS
    
        abProxyBypass() = StrConv("local" & vbNullChar, vbFromUnicode)
    
        options(2).dwValue1 = VarPtr(abProxyBypass(0))
    
     
    
        list.pOptions = VarPtr(options(0))
    
        ' Make sure the memory was allocated.
    
        If (0& = list.pOptions) Then
    
            ' Return FALSE if the memory wasn't allocated.
    
            Debug.Print "Failed to allocate memory in SetConnectionOptions()"
    
            SetConnectionOptions = 0
    
        End If
    
     
    
        ' Set the options on the connection.
    
        bReturn = InternetSetOption(0, INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize)
    
     
    
        ' Free the allocated memory.
    
        Erase options
    
        Erase abConnName
    
        Erase abProxyServer
    
        Erase abProxyBypass
    
        dwBufSize = 0
    
        list.dwOptionCount = 0
    
        list.dwSize = 0
    
        list.pOptions = 0
    
        list.pszConnection = 0
    
        Call InternetSetOption(0, INTERNET_OPTION_SETTINGS_CHANGED, ByVal 0&, 0)
    
        Call InternetSetOption(0, INTERNET_OPTION_REFRESH, ByVal 0&, 0)
    
        SetConnectionOptions = bReturn
    
    End Function
    
     
    
     
    
    ' Disable Proxy
    
     
    
    Public Function DisableConnectionProxy(ByVal conn_name As String) As Boolean
    
    ' conn_name: active connection name. (LAN = "")
    
    Dim list As INTERNET_PER_CONN_OPTION_LIST
    
    Dim bReturn As Boolean
    
    Dim dwBufSize As Long
    
    Dim options(0) As INTERNET_PER_CONN_OPTION
    
    Dim abConnName() As Byte
    
        
    
        dwBufSize = Len(list)
    
        
    
        ' Fill out list struct.
    
        list.dwSize = Len(list)
    
        
    
        ' NULL == LAN, otherwise connectoid name.
    
        abConnName() = StrConv(conn_name & vbNullChar, vbFromUnicode)
    
        list.pszConnection = VarPtr(abConnName(0))
    
        
    
        ' Set three options.
    
        list.dwOptionCount = 1
    
     
    
        ' Set flags.
    
        options(0).dwOption = INTERNET_PER_CONN_FLAGS
    
        options(0).dwValue1 = PROXY_TYPE_DIRECT
    
     
    
        list.pOptions = VarPtr(options(0))
    
        ' Make sure the memory was allocated.
    
        If (0 = list.pOptions) Then
    
            ' Return FALSE if the memory wasn't allocated.
    
            Debug.Print "Failed to allocate memory in DisableConnectionProxy()"
    
            DisableConnectionProxy = 0
    
        End If
    
     
    
        ' Set the options on the connection.
    
        bReturn = InternetSetOption(0, INTERNET_OPTION_PER_CONNECTION_OPTION, list, dwBufSize)
    
        
    
        ' Free the allocated memory.
    
        Erase options
    
        Erase abConnName
    
        dwBufSize = 0
    
        list.dwOptionCount = 0
    
        list.dwSize = 0
    
        list.pOptions = 0
    
        list.pszConnection = 0
    
        Call InternetSetOption(0, INTERNET_OPTION_SETTINGS_CHANGED, ByVal 0&, 0)
    
        Call InternetSetOption(0, INTERNET_OPTION_REFRESH, ByVal 0&, 0)
    
        DisableConnectionProxy = bReturn
    
    End Function 
    
    VB Code:
    
    
    
    
    'Form
    Option Explicit
    Private Sub cmdSetProxy_Click()
    Dim conn_name As String, proxy_full_addr As String
    conn_name = ""
    proxy_full_addr = "167.35.217.71:8080"
    Call SetConnectionOptions(conn_name, proxy_full_addr)
    End Sub
    Private Sub cmdDisableProxy_Click()
    Dim conn_name As String
    conn_name = ""
    Call DisableConnectionProxy(conn_name)
    End Sub
    
    
     
    Last edited: May 28, 2008
  2. skunk1311

    skunk1311 Registered Member

    Joined:
    Dec 13, 2008
    Messages:
    99
    Likes Received:
    188
    thanks may come in handy :p
     
  3. teguh123

    teguh123 BANNED BANNED Premium Member

    Joined:
    Sep 23, 2008
    Messages:
    703
    Likes Received:
    105
    Yes. However, what about if your proxy require username and address?

    Should you just put username:password@123.456.789.012:80 or stuff like that?
     
  4. hotleatherdreams

    hotleatherdreams Registered Member

    Joined:
    Mar 29, 2010
    Messages:
    78
    Likes Received:
    18
    Occupation:
    ecommerce website CODER - SUCK at design and SEO
    Location:
    third rock from hell
    Code:
     
    quick and dirty version that works:
     
    'CONSTANTS AT TOP OF MODULE OR FORM CODE
    Const HKCU = &H80000001 'HKEY_CURRENT_USER
    Const IE_PROXY = "Software\Microsoft\Windows\CurrentVersion\Internet Settings"
     
    Private Sub Command1_Click()
        Set oReg = GetObject("winmgmts:!root/default:StdRegProv")
        tempProxy = "192.168.1.100:8080"
     
        ' SET PROXY ADDRESS IN THE REGISTRY
        CreateValue oReg, HKCU, IE_PROXY, "ProxyServer", tempProxy, "REG_SZ"
        ' ENABLE IT
        CreateValue oReg, HKCU, IE_PROXY, "ProxyEnable", 1, "REG_DWORD"
    End Sub
     
    
    To disable proxy, just run the ProxyEnable part with a zero instead of 1