I tried making a function that would disconnect from a VPN, switch the IP, and reconnect. It does work, but not optmial. I tried looking for a DOS command, but only found rasdial whcih lets you connect to a VPN (but does not allow you to switch the IP) and disconnect from a VPN. Wondering if anyone has a better way for doing this, cause this is all I could come up with.
[ autoit ]
Func changeVPN_IP() $ipLineCount = _FileCountLines("ip.txt") $ip = FileReadLine("ip.txt", round(random(1, $ipLineCount))) $rasphoneTitle = 'Network Connections - rasphone.pbk' $vpnTitle = 'VPN Properties' ;CLOSE ALL RASPHONE AND IEXPLORE M_closeProcess("rasphone.exe") M_closeProcess("iexplore.exe") M_closeProcess("netsh.exe") M_closeProcess("mqsvc.exe") ;CLOSE WINDOWS M_winKill("Remote Access Phonebook") M_winKill("Windows host process (Rundll32)") M_winKill("Error Connecting to VPN") M_winKill("Error Connecting") ;DISCONNECT FROM VPN _RunDos('rasdial "VPN" /disconnect') Sleep(1500) ;START RASPHONE WHICH WILL ALLOW TO CHANGE PROPS OF THE VPN _RunDos("start rasphone.pbk") ;HIDE RASPHONE M_hideWindow($rasphoneTitle) ;CLICK PROPS ON RASPHONE ControlClick($rasphoneTitle, "", 1460, "left", 1) ;HIDE VPN PROPS M_hideWindow($vpnTitle) ;SEND IP TO VPN PROPS ControlSend("", "", 1427, $ip) ;CLICK OK ON VPN PROPS ControlClick ($vpnTitle, "", 1, "left", 1) ;HIDE RASPHONE M_hideWindow($rasphoneTitle) ;CLICK CANCEL ON RASPHONE ControlClick ($rasphoneTitle, "", 1455, "left", 1) ;DISABLE LAN **HAVE TO DO THIS IN ORDER FOR THE VPN TO RECONNECT _RunDos('netsh interface set interface "Local Area Connection" DISABLED') Sleep(1500) ;ENABLE LAN SO WE CAN ENABLE VPN _RunDos('netsh interface set interface "Local Area Connection" ENABLE') Sleep(5000) ;CONNECT TO VPN WITH NEW IP sendto_DOS('rasdial "VPN" antfuentes1252 F1wqQVU8') Sleep(6000) EndFunc Func M_hideWindow($windowName) Do Sleep(100) Until WinExists($windowName, "") = 1 WinSetState ($windowName, "", @SW_HIDE) EndFunc Func M_closeProcess($processName) Do ProcessClose($processName) Sleep(100) Until ProcessExists($processName) = 0 Sleep(100) EndFunc Func M_winKill($windowName) Do WinKill($windowName, "") Sleep(100) Until WinExists($windowName) = 0 Sleep(100) EndFunc