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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Создание VPN подключения с помощью Autoit, не прописывает имя сервера.

Ответить
Настройки темы
[решено] Создание VPN подключения с помощью Autoit, не прописывает имя сервера.

Новый участник


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

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


В архивах форума нашла скрипт от «Котяры» создание диалап подключения, переделала под впн. На моем компьютере скрипт отрабатывает, .exe файл тоже (стоит Win XP SP2 Pro ). На других компьютерах пользователей (таже операционка )установка доходит до введения имени компьютера и останавливается.

Run("rundll32.exe netshell.dll,StartNCW")
WinWaitActive ('Мастер новых подключений','Мастер новых подключений')
Send('{Enter}')
Sleep ('500')
WinWaitActive ('Мастер новых подключений','Подключить к рабочей сети (используя удаленный доступ или VPN), чтобы можно было работать из дома, удаленного офиса или другого места.')
ControlClick ('Мастер новых подключений','Подключить к рабочей сети (используя удаленный доступ или VPN), чтобы можно было работать из дома, удаленного офиса или другого места.','Button2')
Sleep ('500')
Send('{Enter}')
WinWaitActive ('Мастер новых подключений','Создать подключение')
ControlClick ('Мастер новых подключений','Создать подключение','Button2')
Sleep ('500')
Send('{Enter}')
WinWaitActive ('Мастер новых подключений','Организация')
ControlSetText ( 'Мастер новых подключений', '', 'Edit1', 'Name' )
Sleep ('500')
Send('{Enter}')
WinWaitActive ('Мастер новых подключений','Выберите, надо ли автоматически подключаться к Интернету или иной общей сети перед установлением виртуального подключения.')
ControlClick ( 'Мастер новых подключений','Выберите, надо ли автоматически подключаться к Интернету или иной общей сети перед установлением виртуального подключения.','Button1')
Sleep ('500')
Send('{Enter}')
WinWaitActive ('Мастер новых подключений','Имя компьютера или IP-адрес (например, microsoft.com или 157.54.0.1):')
ControlSetText ( 'Мастер новых подключений', '', 'Edit1', 'Host' )
Sleep ('500')
Send('{Enter}')
ControlCommand ( 'Мастер новых подключений', '', 'Button8', 'Check', '' )
ControlCommand ( 'Мастер новых подключений', '', 'Button1', 'Check', '' )
Sleep ('500')
Send('{Enter}')
WinWaitActive ('Мастер новых подключений','Завершение работы мастера новых подключений')
ControlCommand ( 'Мастер новых подключений', '', 'Button10', 'UnCheck', '' )
Send('{Enter}')
Exit


Брала скрип пример из книги Алексея Барабанова «Автоматизация MS Windows или AutoIt, как мечта эникейщика.» тоже самое :о(, у меня работает, на других компах доходит до прописывания имени компьютера и останавливается, не пойму в чем дело! Помогите плиииз!

Отправлено: 17:14, 08-04-2009

 

Googler


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

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


Цитата Vic_tory:
не пойму в чем дело »
очевидно ждет окна, которого нету:
Код: Выделить весь код
WinWaitActive ('Мастер новых подключений','Выберите, надо ли автоматически подключаться к Интернету или иной общей сети перед установлением виртуального подключения.')
как вариант - поставить таймаут ожидания в WinWaitActive() - третий параметр (в секундах), по истечении периода ожидания если окно не появится скрипт продолжит работу... для просмотра в трее строки, на которой "висит" скрипт используйте команду:
Код: Выделить весь код
Opt("TrayIconDebug", 1)

Отправлено: 11:29, 09-04-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

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


Спасибо за ответ, но дело в том что на компьютере на котором пишется скрипт все работает. На других компьютерах с той же ОС останавливается на активном окне 'Мастер новых подключений','Имя компьютера или IP-адрес (например, microsoft.com или 157.54.0.1):' и мигающим курсором в окне ввода имени сервера.

Если поставить таймаут то скрипт продолжает работу но в параметрах сервера остается пусто.

Отправлено: 12:16, 09-04-2009 | #3


Аватара для proxy

Старожил


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

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


Ипользуйте утилиту: Au3Info.exe (находится в корне папки AutoIt)
и посмотрите окно на котором останавливается выполнение скрипта.

Окно должно иметь заголовок: Мастер новых подключений
В тексте окна должен присутсвовать текст (точь в точь): Имя компьютера или IP-адрес (например, microsoft.com или 157.54.0.1):

Поле ввода ip адреса должно иметь ClassnameNN: Edit1

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


Отправлено: 12:46, 09-04-2009 | #4


Googler


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

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


Vic_tory, попробуйте так:
Код: Выделить весь код
Run("rundll32.exe netshell.dll,StartNCW")

$TITLE = "Мастер новых подключений"
While WinWaitActive($TITLE, "", 3)
    $TEXT = WinGetText("")
    Select
        Case StringInStr($TEXT,'Этот мастер поможет:')
        Case StringInStr($TEXT,'Подключить к рабочей сети (используя удаленный доступ или VPN), чтобы можно было работать из дома, удаленного офиса или другого места.')
            ControlClick ("","","Button2")
        Case StringInStr($TEXT,'Создать подключение')
            ControlClick ("","","Button2")
        Case StringInStr($TEXT,'Организация')
            ControlSetText("","","Edit1","Name")
        Case StringInStr($TEXT,'Выберите, надо ли автоматически подключаться к Интернету или иной общей сети перед установлением виртуального подключения.')
            ControlClick ("","","Button1")
        Case StringInStr($TEXT,'Имя компьютера или IP-адрес (например, microsoft.com или 157.54.0.1):')
            ControlSetText("","","Edit1","Host")
        Case StringInStr($TEXT,'Создать это подключение:')
            ControlCommand("","","Button1","Check","")
        Case StringInStr($TEXT,'Завершение работы мастера новых подключений')
            ControlCommand("","","Button10","UnCheck","")
        Case Else
            Sleep ('100')
            ContinueLoop
    EndSelect
    Sleep ('500')
    Send('{Enter}')
WEnd

Отправлено: 13:38, 09-04-2009 | #5


Новый участник


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

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


Цитата proxy:
Ипользуйте утилиту: Au3Info.exe (находится в корне папки AutoIt)
и посмотрите окно на котором останавливается выполнение скрипта.
Окно должно иметь заголовок: Мастер новых подключений
В тексте окна должен присутсвовать текст (точь в точь): Имя компьютера или IP-адрес (например, microsoft.com или 157.54.0.1): »
Проверила окно, заголовок точно такойже
в начеле перед текстом окна стоит знак "&" поставила, не помогло

Цитата proxy:
Поле ввода ip адреса должно иметь ClassnameNN: Edit1 »
так и есть

Отправлено: 13:48, 09-04-2009 | #6


Новый участник


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

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


Спасибо amel27 ваш скрипт работает :о)

только я так и не поняла почему не работает мой :о( что было не так?

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


Аватара для 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


Новый участник


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

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


Большое спасибо всем за ответы, скрипт работает.

но я так и не уяснила себе в чем было дело, хотелось бы знать, что бы не делать ошибок в будущем.

Отправлено: 16:07, 09-04-2009 | #9


Googler


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

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


Vic_tory, поймите правильно - иногда проще и быстрее переписать, чем искать ошибку
обсуждалось неоднократно - посмотрите к примеру ТУТ, ТУТ и ТУТ

Отправлено: 10:13, 10-04-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Создание VPN подключения с помощью Autoit, не прописывает имя сервера.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Автоматическое создание vpn подключения steepz Microsoft Windows 2000/XP 3 13-03-2011 01:25
[решено] Как править ресурсы в файлах с помощью AutoIT CyberStyLe AutoIt 3 29-09-2009 08:07
[решено] Aвторизация на сайте с помощью AutoIt Yandex AutoIt 6 14-04-2009 20:08
создание VPN подключения garbals Microsoft Windows NT/2000/2003 5 15-01-2009 02:23
Автоматическое создание нового подключения к VPN neWex Автоматическая установка Windows 2000/XP/2003 4 23-05-2007 13:52




 
Переход