Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#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
+ еще немного и можно сделать для работы в скрытом виде...

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 14:52, 09-04-2009 | #8