Jump to content

IE Proxy Changer


gcriaco
 Share

Recommended Posts

Purpose:

A simple way for changing the Internet Explorer Proxy Server.

Hope it will be useful for some Autoitters.

Edit

Ver. 1.1 released - 15/5/2007

- Added: Batch function for enabling/disabling - changing proxy without GUI

Edit

Ver. 1.2 released - 21/5/2007

- Added: Proxy exceptions list

Batch usage:

1st Command-line parameter: e/d (enable/disable proxy)

2nd Command-line parameter: proxyname:port

Example:

ChgProxy e MyProxy:8080 => enable MyProxy

ChgProxy d => disable proxy

Gui usage:

do not provide Command-line parameters

Peppe

#Region Compiler directives section
;** This is a list of compiler directives used by AutoIt3Wrapper.exe.
;** comment the lines you don't need or else it will override the default settings
#Compiler_Prompt=n                              ;y=show compile menu
;** AUTOIT3 settings
#Compiler_AUTOIT3=                              ;Override the default Interpreter version.
;** AUT2EXE settings
#Compiler_AUT2EXE=                              ;Override the default compiler with this version.
#Compiler_Icon=Globe.ico                        ;Filename of the Ico file to use
#Compiler_OutFile=                              ;Target exe/a3x filename.
#Compiler_OutFile_Type=exe                      ;a3x=small AutoIt3 file;  exe=Standalone executable(Default)
#Compiler_Compression=4                         ;Compression parameter 0-4  0=Low 2=normal 4=High
#Compiler_Allow_Decompile=y                     ;y= allow decompile
#Compiler_PassPhrase=                           ;Password to use for compilation
#Compiler_UseUpx=y                              ;(y/n) Compress output program works only for 3.1.1.110 and up. Default=Yes
;** Target program Resource info
#Compiler_Res_Comment= Change IE Proxy          ;Comment field
#Compiler_Res_Description=Change IE Proxy       ;Description field
#Compiler_Res_Fileversion=1.2                       ;File Version
#Compiler_Res_FileVersion_AutoIncrement=n       ;AutoIncrement FileVersion After Aut2EXE is finished.
;#Compiler_Res_Language=2057                    ;Resource Language code . default 2057=English (United Kingdom)
#Compiler_Res_LegalCopyright=Giuseppe Criaco    ;Copyright field
; free form resource fields ... max 15
; you can use the following variables:
; %AutoItVer% which will be replaced with the version of AutoIt3
; %date% = PC date in short date format
; %longdate% = PC date in long date format
; %time% = PC timeformat
#Compiler_Res_Field=AutoIt Version|%AutoItVer%
#Compiler_Res_Field=Email|gcriaco@quipo.it      ;Free format fieldname|fieldvalue
#Compiler_Res_Field=Release Date|21/5/2007      ;Free format fieldname|fieldvalue
#Compiler_Res_Field=Name|Value                  ;Free format fieldname|fieldvalue
#Compiler_Res_Field=Name|Value                  ;Free format fieldname|fieldvalue
; Tidy Settings
#Compiler_Run_Tidy=n                      ;Run au3check before compilation. default=y
#Compiler_Tidy_Stop_onerror=n             ;Continue when only Warnings. default=y
#Tidy_Parameters=                         ;Tidy Parameters...see SciTE4AutoIt3 Helpfile for options
; AU3CHECK settings
#Compiler_Run_AU3Check=                  ;(Y/N) Run au3check before compilation. Default=Y
#Compiler_AU3Check_Parameters=            ;Au3Check parameters
#Compiler_AU3Check_Dat=                   ;Override the default au3check definition
#Compiler_AU3Check_Stop_OnWarning=        ;(Y/N) N=Continue on Warnings.(Default) Y=Always stop on Warnings
#Compiler_AU3Check_Parameters=            ;Au3Check parameters
#Compiler_PlugIn_Funcs=                   ;Define PlugIn function names separated by a Comma to avoid AU3Check errors
; RUN BEFORE AND AFTER definitions
; The following directives can contain:
;   %in% , %out%, %icon% which will be replaced by the fullpath\filename.
;   %scriptdir% same as @ScriptDir and %scriptfile% = filename without extension.
;   %fileversion% is the information from the #Compiler_Res_Fileversion directive
;   %scitedir% will be replaced by the SciTE program directory
#Compiler_Run_Before=                               ;process to run before compilation - you can have multiple records that will be processed in sequence
#Compiler_Run_After=       ;process to run After compilation - you can have multiple records that will be processed in sequence
#Compiler_Run_cvsWrapper=n   ;(y/n) Run cvsWrapper to update the script source. Default=n
; Run Settings
#Run_Debug_Mode=n            ; Run Script with console debugging
#EndRegion

;===================================================================================================================================================
;
; Program Name:     ChangeProxy()
; Description:      IE Proxy Changer
; Parameter(s):     None
; Requirement(s):   ChgProxy.ini
; Return Value(s):  None
; Author(s):        Giuseppe Criaco <gcriaco@quipo.it>
;
;===================================================================================================================================================
#Region - Include and Declarations
;~ AutoItSetOption("TrayIconDebug", 1) ;Debug: 0=no info, 1=debug line info

#include <GuiConstants.au3>
#include <GuiList.au3>

Global Const $WM_COMMAND = 0x0111
Global Const $LBN_SELCHANGE = 1
Global Const $LBN_DBLCLK = 2

Dim $asCmd[50], $iCmd = 0, $IP, $sHostName, $sEncryptPwd, $sPwd, $sUser, $iSleep = 1000, $sPutty, $iSendKeyDelay = 50
#EndRegion - Include and Declarations

;Batch Proxy Change
;Command-line parameters: 
;1st: e/d (enable/disable proxy)
;2nd: proxyname:port
;Example: ChgProxy e MyProxy:8080
If $CmdLine[0] > 0 Then _Batch()

#Region ### START Koda GUI section ### Form=c:\autoit\proxy\chgproxy.kxf
$AForm1 = GUICreate("ChgProxy v. 1.2", 235, 369, 493, 134)
$btnOk = GUICtrlCreateButton("&Start", 88, 336, 65, 25, $BS_DEFPUSHBUTTON)
$lstServer = GUICtrlCreateList("", 8, 64, 217, 97)
$btnExit = GUICtrlCreateButton("&Exit", 160, 336, 65, 25, 0)
$AGroup1 = GUICtrlCreateGroup("Settings", 8, 280, 217, 49)
$optEnabled = GUICtrlCreateRadio("Enabled", 24, 304, 73, 17)
$optDisabled = GUICtrlCreateRadio("Disabled", 144, 304, 73, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$grpProxy = GUICtrlCreateGroup("Proxy Server", 8, 8, 217, 49)
$lblProxy = GUICtrlCreateLabel("lblProxy", 24, 32, 192, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$edtExceptions = GUICtrlCreateEdit("", 8, 200, 217, 73, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL,$WS_BORDER))
GUICtrlSetData(-1, "")
$Label1 = GUICtrlCreateLabel("Exceptions:", 8, 180, 59, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

If Not FileExists(@ScriptDir & "\ChgProxy.ini") Then
    ;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Warning
    MsgBox(48, "File Not Found", "Required file not found (" & @ScriptDir & "\ChgProxy.ini" & ")" & @CRLF & "" & @CRLF & "ChgProxy will now exit!!!")
    Exit
EndIf

; Get IE Proxy server Registry values
$sProxy = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyServer")
$iEnabled = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyEnable")
$sExceptions = RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyOverride")

If $iEnabled Then
    GUICtrlSetState($optEnabled, $GUI_CHECKED)
    TrayTip("Proxy Server: ", $sProxy, 5, 1)
    TraySetToolTip("Proxy Server: " & $sProxy)
    GUICtrlSetData($lblProxy, $sProxy)
Else
    GUICtrlSetState($optDisabled, $GUI_CHECKED)
    TrayTip("Proxy Server: ", "Disabled(Direct Connection)", 5, 1)
    TraySetToolTip("Proxy Server: Disabled(Direct Connection)")
    GUICtrlSetData($lblProxy, $sExceptions)
EndIf

GUICtrlSetData($edtExceptions, $sExceptions)

HotKeySet("{ESC}", "_Terminate")

;Servers
$sSection = IniReadSection(@ScriptDir & "\ChgProxy.ini", "Servers")
If @error Then
    #Region --- CodeWizard generated code Start ---
    ;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Critical
    MsgBox(16, "ChgProxy", "Unable to read the section Server")
    #EndRegion --- CodeWizard generated code End ---
    Exit
Else
    ;Load ListBox
    Local $iLstIndex = 0
    For $iSection = 1 To $sSection[0][0]
        GUICtrlSetData($lstServer, $sSection[$iSection][0] & " (" & $sSection[$iSection][1] & ")")
        If $sProxy = $sSection[$iSection][1] Then
            GUICtrlSetData($grpProxy, "Proxy: " & $sSection[$iSection][0])
            $iLstIndex = $iSection - 1
        EndIf
    Next
    
    If $iLstIndex > 0 Then
        $ret = _GUICtrlListSelectIndex($lstServer, $iLstIndex)
        If ($ret == $LB_ERR) Then
            MsgBox(16, "Error", "Unknown error from _GUICtrlListSelectIndex")
        EndIf
    EndIf
EndIf

;Register a user defined function for the Windows Message ID WM_COMMAND.
GUIRegisterMsg($WM_COMMAND, "MY_WM_COMMAND")

GUISetState()
While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE Or $msg = $btnExit
            _Terminate()

        Case $msg = $btnOk
            _Start()
    EndSelect
WEnd

;----------------------------------------------------------------------------------------------------------------

Func _Start()
    ;Proxy enabled
    If GUICtrlRead($optEnabled) = $GUI_CHECKED Then
        $sTmpKey = GUICtrlRead($lstServer)
        $sKey = StringLeft($sTmpKey, StringInStr($sTmpKey, " ("))

        If $sKey = "" Then
            #Region --- CodeWizard generated code Start ---
            ;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Warning
            MsgBox(48, "Error Message", "No proxy selected")
            #EndRegion --- CodeWizard generated code End ---
        Else
            $sProxy = IniRead(@ScriptDir & "\ChgProxy.ini", "Servers", $sKey, "NotFound")
            If @error Or $sProxy = "NotFound" Then
                ;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Critical
                MsgBox(16, "ChgProxy", "Unable to read the Key " & $sKey)
                Exit
            Else
                RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyServer", "REG_SZ", $sProxy)
                TrayTip("Proxy Server: ", $sProxy, 5, 1)
                TraySetToolTip("Proxy Server: " & $sProxy)
                GUICtrlSetData($lblProxy, $sProxy)
                GUICtrlSetData($grpProxy, "Proxy: " & $sKey)
            EndIf
        EndIf
        
        $sExceptions = GUICtrlRead($edtExceptions)
        RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyEnable", "REG_DWORD", 1)
        RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyOverride", "REG_SZ", $sExceptions)
    Else
        ;Proxy Disabled
        RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyEnable", "REG_DWORD", 0)
        TrayTip("Proxy Server: ", "Disabled (Direct Connection)", 5, 1)
        TraySetToolTip("Proxy Server: Disabled(Direct Connection)")
        GUICtrlSetData($lblProxy, "Disabled (Direct Connection)")
        GUICtrlSetData($grpProxy, "Proxy")
    EndIf
EndFunc   ;==>_Start

;----------------------------------------------------------------------------------------------------------------

Func _Terminate()
    Exit 0
EndFunc   ;==>_Terminate

;----------------------------------------------------------------------------------------------------------------

Func MY_WM_COMMAND($hWnd, $msg, $wParam, $lParam)
    $nNotifyCode = BitShift($wParam, 16)
    $nID = BitAND($wParam, 0x0000FFFF)
    $hCtrl = $lParam

    If $nID = $lstServer Then
        Switch $nNotifyCode
            Case $LBN_DBLCLK
                _Start()
                Return 0
        EndSwitch
    EndIf
EndFunc   ;==>MY_WM_COMMAND

;==============================================================================================================

Func _Batch()
    If (StringLower ($CmdLine[1]) <> "e" And StringLower ($CmdLine[1]) <> "d") Or _
        (StringLower ($CmdLine[1]) = "e" And $CmdLine[0] < 2) Then
        ;MsgBox features: Title=Yes, Text=Yes, Buttons=OK, Icon=Critical
        MsgBox(16,"Error Message","Command-line parameters: " & @CRLF & "1st: e/d (enable/disable proxy)" & @CRLF & "2nd: proxyname:port" & @CRLF & "Example: ChgProxy e MyProxy:8080")
    Else    
        If StringLower ($CmdLine[1]) = "e" Then
            RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyServer", "REG_SZ", $CmdLine[2])
            RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyEnable", "REG_DWORD", 1)
        Else
            RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings", "ProxyEnable", "REG_DWORD", 0)
        EndIf
    EndIf
    
    _Terminate()    
EndFunc

Requirements: ChgProxy.ini file

You have to manually create the INI file with Proxy Server names/Addresses:Ports list in the following format:

[servers]

;Proxy Name=Proxy Address:Port

proxyname1=IP Address1:Port1

proxyname2=IP Address2:Port2

...

proxynamen=IP Addressn:Portn

Edited by gcriaco
Link to comment
Share on other sites

Link to comment
Share on other sites

  • 3 weeks later...

Ver. 1.1 released - 15/5/2007

Added: Batch function for enabling/disabling - changing proxy without GUI

Batch usage:

1st Command-line parameter: e/d (enable/disable proxy)

2nd Command-line parameter: proxyname:port

Example:

ChgProxy e MyProxy:8080 => enable MyProxy

ChgProxy d => disable proxy

Gui usage:

do not provide Command-line parameters

See first post.

Peppe

Edited by gcriaco
Link to comment
Share on other sites

  • 5 years later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...