[SRC] Change Proxy IE

Discussion in 'Visual Basic' started by Ethan Perkins, '.

  1. Ethan Perkins

    Ethan Perkins New Member

    Messages:
    3
    [SRC] Change Proxy IE
    Hi team,
    This is source code the VB6 lets you change the IE proxy without restart it.

    Module:
    Code:
    'ModuleOption 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
    FORM:
    Code:
    'FormOption 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
    Regard's

Share This Page