Перейти из форума на сайт.


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172

Открыть новую тему     Написать ответ в эту тему

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя эмуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши, управление окнами и их визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
  • Справки
  • Инструменты
  • Ресурсы, посвящённые AutoIt
  • Полезные советы новичкам и не только
  • Готовые решения
  • Скрипт раскраски кода AutoIt для публикации в форумах
     


     
    За шапкой следит ViSiToR / AZJIO  

  • Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 13:07 01-06-2010 | Исправлено: Maz, 11:50 17-04-2017
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Всех с переездом!

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:53 01-06-2010
    NIKZZZZ



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    По поводу Ссылка
    Кроме этого, надо исправить удаление отладочных строк
    Подробнее...

    Всего записей: 4579 | Зарегистр. 08-02-2006 | Отправлено: 15:59 01-06-2010 | Исправлено: NIKZZZZ, 16:06 01-06-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    NIKZZZZ 15:59 01-06-2010
    Цитата:
    Кроме этого, надо исправить удаление отладочных строк

    В этом случае можно не дублировать функции:
     

    Код:
    function AutoItTools:ConsoleWritePattern(with_comment)
        return self:MsgBoxPattern(with_comment)
    end    -- ConsoleWritePattern()
     
    function AutoItTools:MsgBoxPattern(with_comment)
        local nl = self:NewLineInUse()
        if with_comment then
            return nl .. "[%s]*;[%s]*(SetError%([^" .. nl .. "]-%) ;### Debug[^" .. nl .. "]+)"
        else
            return nl .. "[%s]*(SetError%([^" .. nl .. "]-%) ;### Debug[^" .. nl .. "]+)"
        end
    end    -- MsgBoxPattern()


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 16:26 01-06-2010
    degid



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Есть скрипт на vbscript, меняет рабочую группу, тут нашел пример всовывания vbscript в AutoIT, но он чет вылетает на с ошибкой
    Исходный скрипт:

    Код:
     
    Const JOIN_DOMAIN = 1
    Const ACCT_CREATE = 2
    Const ACCT_DELETE = 4
    Const WIN9X_UPGRADE = 16
    Const DOMAIN_JOIN_IF_JOINED = 32
    Const JOIN_UNSECURE = 64
    Const MACHINE_PASSWORD_PASSED = 128
    Const DEFERRED_SPN_SET = 256
    Const INSTALL_INVOCATION = 262144
     
    strDomain = "NewGr"
     
    Set objNetwork = CreateObject("WScript.Network")
    strComputer = objNetwork.ComputerName
    Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" & _
        strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
    ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain)
     

    AutoIT

    Код:
    $ProcessName = "AutoIt3.exe"
    $RetArr = _ProcessExistsVbs($ProcessName)
    If IsArray($RetArr) Then MsgBox(64, "", "Process <" & $RetArr[1] & "> exists." & @LF & @LF & _
        "The returned PID is: " & $RetArr[2] & @LF & @LF & _
        "Returned Executable Path is: " & @LF & $RetArr[3] & @LF & @LF & _
        "Command Line of executed process is: " & @LF & $RetArr[4])
     
    Func _ProcessExistsVbs($ProcName)
         Local $Code = ""
        $Code &= 'Function ProcessExists(ProcessName)' & @LF
        $Code &= 'Const JOIN_DOMAIN = 1' & @LF
        $Code &= 'Const ACCT_CREATE = 2' & @LF
        $Code &= 'Const ACCT_DELETE = 4' & @LF
        $Code &= 'Const WIN9X_UPGRADE = 16' & @LF
        $Code &= 'Const DOMAIN_JOIN_IF_JOINED = 32' & @LF
        $Code &= 'Const JOIN_UNSECURE = 64' & @LF
        $Code &= 'Const MACHINE_PASSWORD_PASSED = 128' & @LF
        $Code &= 'Const DEFERRED_SPN_SET = 256' & @LF
        $Code &= 'Const INSTALL_INVOCATION = 262144' & @LF
        $Code &= 'strDomain = "NewGr"' & @LF
        $Code &= 'Set objNetwork = CreateObject("WScript.Network")' & @LF
        $Code &= 'strComputer = objNetwork.ComputerName' & @LF
     
        $Code &= "Set objComputer = GetObject(" & """winmgmts:{impersonationLevel=Impersonate}!\\""" &     " & strComputer & " & """\root\cimv2:Win32_ComputerSystem.Name='" & " & strComputer & " & "'" & @LF
     
        $Code &= 'ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain)' & @LF
        $Code &= 'End Function'
     
        Local $VbsObj = ObjCreate("ScriptControl")
        If @error Then Return SetError(1, 0, -1)
        $VbsObj.Language = "vbscript"
    $VbsObj.AddCode($Code)
        Local $RetArr = $VbsObj.[i]Run[/i]("ProcessExists", $ProcName)
        If $RetArr = 0 Then Return SetError(0, 0, 0)
        Return $RetArr
    EndFunc

    в общем, ругается он на эту строчку:
     

    Код:
    $Code &= "Set objComputer = GetObject(" & """winmgmts:{impersonationLevel=Impersonate}!\\""" & " & strComputer & " & """\root\cimv2:Win32_ComputerSystem.Name='" & " & strComputer & " & "'" & @LF

     
    Ошибка: The requested action with this object has failed.
     
    подскажите плиз, что ему не хватает?

    Всего записей: 30 | Зарегистр. 26-10-2006 | Отправлено: 18:16 02-06-2010 | Исправлено: degid, 14:38 03-06-2010
    Kar1son

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    degid
    если внутри строки у тебя есть кавычки " то саму строку надо заключать в апострофы ' и наоборот.
     
    Зы хотел написать готовую но запутался в твоей строке

    Всего записей: 184 | Зарегистр. 23-08-2006 | Отправлено: 19:02 02-06-2010 | Исправлено: Kar1son, 19:03 02-06-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    degid 18:16 02-06-2010
    Цитата:
    Есть скрипт на vbscript, меняет рабочую группу, тут нашел пример всовывания vbscript в AutoIT, но он чет вылетает на с ошибкой

    А зачем выполнять vbs из AutoIt, это не тот случай , вот тот же скрипт но переведён на AutoIt (не тестировал):
     

    Код:
    Const $JOIN_DOMAIN = 1
    Const $ACCT_CREATE = 2
    Const $ACCT_DELETE = 4
    Const $WIN9X_UPGRADE = 16
    Const $DOMAIN_JOIN_IF_JOINED = 32
    Const $JOIN_UNSECURE = 64
    Const $MACHINE_PASSWORD_PASSED = 128
    Const $DEFERRED_SPN_SET = 256
    Const $INSTALL_INVOCATION = 262144
     
    $strDomain = "NewGr"
     
    $objNetwork = ObjCreate("WScript.Network")
    $strComputer = $objNetwork.ComputerName
    $objComputer = ObjGet("winmgmts:{impersonationLevel=Impersonate}!\\" & $strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & $strComputer & "'")
    $ReturnValue = $objComputer.JoinDomainOrWorkGroup($strDomain)


    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 21:33 02-06-2010
    Kar1son

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    а откуда ты узнаешь об обектах? например в ObjCreate("WScript.Network"), ты откуда узнал что есть такой объект "WScript.Network"?

    Всего записей: 184 | Зарегистр. 23-08-2006 | Отправлено: 01:12 03-06-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Kar1son 01:12 03-06-2010
    Цитата:
    откуда ты узнаешь об обектах? например в ObjCreate("WScript.Network"), ты откуда узнал что есть такой объект "WScript.Network"?

    Это из скрипта от degid
     
    А вообще есть такой инструмент как Scriptomatic, там можно много чего узнать об объектах (работа с WMI), ну и конечно же разные справки по теме WSH.

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 02:09 03-06-2010
    Kar1son

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    есть команда Send('Kar1son{Enter}'), а если в момент выполнения язык в системе переключен на русский то получается "Лфк1ыщт". Есть способы кроме как посылать через Send ASCII коды символов?

    Всего записей: 184 | Зарегистр. 23-08-2006 | Отправлено: 14:05 03-06-2010
    degid



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Kar1son, ViSiToR
    разобрался, всё дело в кавычках... (там просто сразу " и ' используются, записал $Code в файлик и всё увидел)

    Код:
    $Code &= "Set objComputer = GetObject(" & """winmgmts:{impersonationLevel=Impersonate}!\\""" & " & _" & @LF
        $Code &= "strComputer & " & """\root\cimv2:Win32_ComputerSystem.Name='""" & " & _" & @LF
        $Code &= "strComputer & " & """'""" & ")" & @LF

    конечно, было бы прикольно его полностью переделать на AutoIt...  но отложу разбор на потом...  

    Всего записей: 30 | Зарегистр. 26-10-2006 | Отправлено: 14:21 03-06-2010 | Исправлено: degid, 14:40 03-06-2010
    NIKZZZZ



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    degid

    Цитата:
    разобрался, всё дело в кавычках...

    В таких случаях удобно использовать одиночные кавычки, например:

    Код:
    $Code &= 'Set objComputer = GetObject(' & '"winmgmts:{impersonationLevel=Impersonate}!\\"' & ' & _' & @LF  

    Всего записей: 4579 | Зарегистр. 08-02-2006 | Отправлено: 14:29 03-06-2010
    degid



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    есть команда Send('Kar1son{Enter}'), а если в момент выполнения язык в системе переключен на русский то получается "Лфк1ыщт". Есть способы кроме как посылать через Send ASCII коды символов?

    http://forum.ru-board.com/topic.cgi?forum=5&topic=17705&start=2620#15

    Всего записей: 30 | Зарегистр. 26-10-2006 | Отправлено: 14:32 03-06-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Kar1son 14:05 03-06-2010
    Цитата:
    Есть способы кроме как посылать через Send ASCII коды символов?

    Обход проблемы с кодировкой при использовании Send
     
    degid 14:21 03-06-2010
    Цитата:
    было бы прикольно его полностью переделать на AutoIt

    Я привёл пример выше.

    ----------
    ViSiToR a.k.a CreatoR
    CreatoR это не ник, CreatoR это стиль жизни!

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:20 03-06-2010
    Z4masko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите как автоматизировать нажатия в Internet Explorer по элементам меню, которое написано на JavaScript?  
    То есть есть выпадающее меню на Javascript и справа кнопочка Ок например (то же относится к этому скрипту). И вот как бы указать через Auto It те элементы меню ,на которые надо кликать и потом нажимать ОК ?  
    С обычными ссылками понятно - можно просто делать: _IELinkClickByText  
    А вот как кликать когда все меню на JavaScript - непонятно (
    Почитал мануал, там написано что при таких случаях надо кликать с помощью:  

    Код:
    _IEAction ($element, "click")

    Но вот какой функцией определить имя этого элемента и присвоить его к переменной $element ?  

    Всего записей: 649 | Зарегистр. 05-11-2004 | Отправлено: 16:45 03-06-2010
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Z4masko
    Вы здесь посмотрите: Выбрать определенное значение из списка в окне, там для vkontakte есть готовое решение.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 17:25 03-06-2010
    Kar1son

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Z4masko
    я когда пытался этой функцией пользоваться, сохранял страничку и потом в коде(блокнотом открывал просто) искал имя элемента

    Всего записей: 184 | Зарегистр. 23-08-2006 | Отправлено: 18:02 03-06-2010
    degid



    Newbie
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

    Цитата:
    Kar1son  
    degid 14:21 03-06-2010
    Цитата:
    было бы прикольно его полностью переделать на AutoIt

    Я привёл пример выше.

    Спасибо!!! Работает )

    Всего записей: 30 | Зарегистр. 26-10-2006 | Отправлено: 18:12 03-06-2010 | Исправлено: degid, 18:24 03-06-2010
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Маленькая задачка: Необходимо сформировать энное количество байтов, но заранее нам это количество не известно. Оно появляется в результате другой функции.
    Я сделал вот так:

    Код:
    $iBytesToAdd = 10
    $string = ""
    $stringlen = ""
    While 1
        $string &= "00"
        $stringlen = StringLen ($string)
        If $stringlen = $iBytesToAdd * 2 Then ExitLoop
    WEnd

    $bstring = "0x" & $string
    $bstring
    = Binary ($bstring)

    Но может, кто-то подскажет более элегантное решение?

    Всего записей: 1565 | Зарегистр. 01-05-2006 | Отправлено: 11:45 04-06-2010
    NIKZZZZ



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ynbIpb

    Цитата:
    более элегантное решение?

     

    Код:
    $iBytesToAdd = 10
    $string = "0x"
    For $i= 1 To $iBytesToAdd
        $string &= "00"  
    Next
    $bstring = Binary ($string)
     
    Другой вариант, если $iBytesToAdd ограничено
     

    Код:
    $iBytesToAdd = 10  
    $bstring = BinaryMid (Binary ("0x000000000000000000000000000000000000000000000000000000000000"),1,$iBytesToAdd)

    Всего записей: 4579 | Зарегистр. 08-02-2006 | Отправлено: 12:20 04-06-2010 | Исправлено: NIKZZZZ, 12:30 04-06-2010
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)

    Имя:
    Пароль:
    Сообщение

    Для вставки имени, кликните на нем.

    Опции сообщенияДобавить свою подпись
    Подписаться на получение ответов по e-mail
    Добавить тему в личные закладки
    Разрешить смайлики?
    Запретить коды


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2017

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru