Код:
#region: - Options
Opt('MustDeclareVars', 1)
Opt('TrayIconDebug', 1)
Opt('TrayIconHide', 0)
Opt('WinDetectHiddenText', 1)
#endregion
HotKeySet('{ESC}', '_Pro_Exit')
Local $iPid = Run('rundll32.exe netshell.dll,StartNCW')
Local $sRasPhoneFilePath = @AppDataCommonDir & '\Microsoft\Network\Connections\Pbk\rasphone.pbk'
Local $sRasPhoneFileText = FileRead($sRasPhoneFilePath)
Local $iHwd, $sText
Local $sTitle = 'Мастер новых подключений'
Local $sConnectName = 'Connect name - Имя подключения'
Local $sConnectIP = '150.100.0.12'
Local $fAddShortcutOnDesktop = 1
While 1
$iHwd = _ProcessGetWindow($iPid)
If BitAnd(WinGetState($iHwd), 2) Then ExitLoop
WEnd
While 1
$sText = WinGetText($iHwd)
Select
Case StringInStr($sText,'Этот мастер поможет:')
ControlClick($iHwd, '', '[CLASS:Button; INSTANCE:2]')
Case StringInStr($sText,'Подключить к рабочей сети (используя удаленный доступ или VPN), чтобы можно было работать из дома, удаленного офиса или другого места.')
ControlClick($iHwd, '', '[CLASS:Button; INSTANCE:2]')
ControlClick($iHwd, '', '[CLASS:Button; INSTANCE:6]')
Case StringInStr($sText,'&Подключение к виртуальной частной сети')
ControlClick($iHwd, '', '[CLASS:Button; INSTANCE:2]')
ControlClick($iHwd, '', '[CLASS:Button; INSTANCE:8]')
Case StringInStr($sText,'Введите в следующем поле имя для этого подключения.')
While 1
If StringInStr($sRasPhoneFileText, '[' & _StringToUTF($sConnectName) & ']') OR $sConnectName == '' Then
$sConnectName = InputBox('Внимание', 'Подключение с иминем "' & $sConnectName & '" уже существует' & @CRLF & @CRLF & _
'Введите другое название для подключения:', '', '', 300, 150, -1, -1)
Else
ExitLoop
EndIf
WEnd
ControlSetText($iHwd, '', '[CLASS:Edit; INSTANCE:1]', $sConnectName)
ControlClick($iHwd, '', '[CLASS:Button; INSTANCE:8]')
Case StringInStr($sText,'Выберите, надо ли автоматически подключаться к Интернету или иной общей сети перед установлением виртуального подключения.')
ControlClick($iHwd, '', '[CLASS:Button; INSTANCE:1]')
ControlClick($iHwd, '', '[CLASS:Button; INSTANCE:10]')
Case StringInStr($sText,'Введите имя узла или IP-адрес компьютера, к которому осуществляется подключение.')
ControlSetText($iHwd, '', '[CLASS:Edit; INSTANCE:1]', $sConnectIP)
ControlClick($iHwd, '', '[CLASS:Button; INSTANCE:10]')
Case StringInStr($sText,'Успешно завершено создание следующего подключения:')
If $fAddShortcutOnDesktop Then ControlClick($iHwd, '', '[CLASS:Button; INSTANCE:1]')
ControlClick($iHwd, '', '[CLASS:Button; INSTANCE:21]')
ExitLoop
EndSelect
Sleep('10')
WEnd
Func _Pro_Exit()
Exit
EndFunc
Func _ProcessGetWindow($iPID, $iRet=1)
Local $aWinList = WinList()
Local $aRet[2]
If IsString($iPID) Then $iPID = ProcessExists($iPID)
For $i = 1 To UBound($aWinList)-1
If WinGetProcess($aWinList[$i][1]) = $iPID Then
$aRet[0] = $aWinList[$i][0] ;Title
$aRet[1] = $aWinList[$i][1] ;WinHandle
If $iRet = 0 Then Return $aRet[0]
If $iRet = 1 Then Return $aRet[1]
Return $aRet
EndIf
Next
Return SetError(1, 0, $aRet)
EndFunc
Func _StringToUTF($String)
Local $sResult = "", $iCode
Local $VarUTFArr = StringSplit($String, "")
For $i = 1 To $VarUTFArr[0]
$iCode = Asc($VarUTFArr[$i])
Select
Case $iCode >= 192 And $iCode <= 239
$VarUTFArr[$i] = Chr(208) & Chr($iCode - 48)
Case $iCode >= 240 And $iCode <= 255
$VarUTFArr[$i] = Chr(209) & Chr($iCode - 112)
Case $iCode = 168
$VarUTFArr[$i] = Chr(208) & Chr(129)
Case $iCode = 184
$VarUTFArr[$i] = Chr(209) & Chr(145)
Case Else
$VarUTFArr[$i] = Chr($iCode)
EndSelect
$sResult &= $VarUTFArr[$i]
Next
Return $sResult
EndFunc
+ еще немного и можно сделать для работы в скрытом виде...