#SingleInstance Force
Gui, Add, Listbox, w200 r4 vNameList choose1, % GetSystemNetworkInterfaceNameList()
Gui, Add, Edit, xs w100 vCurIP ReadOnly, % A_IPAddress1
Gui, Add, Edit, xs w100 vNewIP,
Gui, Add, Button, gBtnChange, IP교체
Gui, Show
return
GuiClose:
ExitApp
BtnChange:
GuiControlGet, NameList
GuiControlGet, NewIP
SetIP(NameList, NewIP)
Sleep, 1000
GuiControl,, CurIP, % A_IPAddress1
return
;---------------------------------------------------------------
SetIP(interfaceName, IP)
{
StringSplit, IPArray, IP, .
IPS := IPArray1
if IPS between 1 and 127
Subnet=255.0.0.0
if IPS between 128 and 191
Subnet=255.255.0.0
if (IPS>191)
Subnet=255.255.255.0
Run, %Comspec% /c netsh interface ip set address name="%interfaceName%" source=static addr=%IP% mask=%Subnet%,, Hide
return 1
}
;시스템의 네트워크 인터페이스 목록을 획득, 구분자는 '|'
GetSystemNetworkInterfaceNameList()
{
FileDelete, % tmpFile := A_Temp "\_NetChange.tmp"
RunWait, %Comspec% /c netsh interface show interface >> %tmpFile%,, Hide ;get list of Lan adapters on PC
Loop, Read, %tmpFile%
{
IfInString, A_LoopReadLine, ---------
{
isValidLine := 1
continue
}
if !isValidLine or !A_LoopReadLine
continue
str := RegExReplace(A_LoopReadLine, " +", "|")
Loop, Parse, str, |
if A_index=4
list .= "|" A_LoopField
}
StringReplace, list, list, |
return list
}