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

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

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

gyra (23-01-2020 10:51): AutoIT (Часть 4)  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

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, 12:29 10-01-2020
    bredonosec



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

    Цитата:
    В каталоге Extras.


    Цитата:
    AutoUpdateIt\
    Editors\
    Geshi\
    Prettify\
    _ReadMe_.txt
    Toggle AU3 Beta.au3

    там вообще ехешников в подпапках не наблюдается.  

    Всего записей: 16257 | Зарегистр. 13-02-2003 | Отправлено: 23:59 02-09-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bredonosec
    Выпилили, значит, возьмите из версии помладше 3.3.12.0.

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 00:03 03-09-2015
    bredonosec



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    спасибо
    а они взаимозаменяемы? Не будет проблем?

    Всего записей: 16257 | Зарегистр. 13-02-2003 | Отправлено: 01:20 03-09-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bredonosec
    Вы же будете записывать движения мыши и клики, там функции не менялись.
    Из дистрибутива, предполагаю, убрали за ложные срабатывания антивирусников.
     
     
    2All
    Кто-нибудь проверял с таймером разницу при сокращении имён переменных и функций (вроде ключа /RenameMinimum Au3Stripper) на проектах покрупнее?

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 01:58 03-09-2015
    NIKZZZZ



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

    Цитата:
    а этот рекордер - во всех дистрах есть?  

    Есть в последней бетке 3.3.15.0 , странно, что в 3.3.14.1 пропустили.
     
     
    Добавлено:
    Skif_off

    Цитата:
    Кто-нибудь проверял с таймером разницу при сокращении имён переменных и функций (вроде ключа /RenameMinimum Au3Stripper) на проектах покрупнее?

    Ради интереса написал тестовый скриптик

    Код:
    $hTimer = TimerInit()
    For $igifiyfifididifdoiofofifiidisdsgkgyfdduiididsrsysuuusxfrrrcjjjfkjvjj=1 To 1000000
        fydfdpnhfxislhligfkfkflffdkfkididkfkffdksonohohofydudyydudaajfkfllflo()
    Next
     
    $iDiff = TimerDiff($hTimer)
    MsgBox(0, "Время выполнения", $iDiff & ' ms')
     
    Func fydfdpnhfxislhligfkfkflffdkfkididkfkffdksonohohofydudyydudaajfkfllflo()
        $ikflfydljdd66dtds5swlfsscgcrxbsbsnkdntndjdjgkgggkftdrsrsrssjsjsssjssshsrh=0
        $skflfydlgfyffyfyi5swlfsscgcrxbsbsnkdntndjdjgkgggkftdrsrsrssjsjsssjssshsrh="0"
        $vkflfydlgfyffyfyi5swlfsscgcrxgfydaxhhtndjdjgkgggkftdrsrsrssjsjsssjssshsrh=0
    EndFunc

     
     
    Получил

    Код:
    $0 = TimerInit()
    For $1=1 To 1000000
    _0()
    Next
    $2 = TimerDiff($0)
    MsgBox(0, "Время выполнения", $2 & ' ms')
    Func _0()
    $3=0
    $4="0"
    $5=0
    EndFunc

     
    Результат  6068/7554 , скорость увеличилась в 1.25 раз, но надо учитывать , это тестовый скрипт, на реальных проектах это будет практически незаметно.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 07:28 03-09-2015 | Исправлено: NIKZZZZ, 07:36 03-09-2015
    bredonosec



    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    а ложные остались?
    Симантек как реагирует на его деятельность?
    Просто не хочется потом иметь проблем с вопросами,откуда оно взялось...

    Всего записей: 16257 | Зарегистр. 13-02-2003 | Отправлено: 10:11 03-09-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    bredonosec
    Я мог и ошибиться с предположением, на вирустотал версия из беты: ASWhook.dll и Au3Record.exe.
     
    NIKZZZZ
    Почему на реальных будет незаметно? А что-нибудь эдакое на одну - две тысячи строк? У меня нет таких больших

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 12:09 03-09-2015
    NIKZZZZ



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

    Цитата:
    У меня нет таких больших

    Так мешает его сделать для теста?

    Код:
    $sTst2 = '$hTimer = TimerInit()' & @CRLF
    For $i = 1 To 5000
        $sName = ''
        For $1 = 1 To 100
            $sName &= Chr(Random(65, 90))
        Next
        $sTst2 &= '$' & $sName & '=0' & @CRLF
    Next
    $sTst2 &='$iDiff = TimerDiff($hTimer)'  & @CRLF
    $sTst2 &='MsgBox(0, "Время выполнения", $iDiff & " ms")' & @CRLF
    $hF = FileOpen("tst2.au3", 2)
    FileWrite($hF, $sTst2)
    FileClose($hF)

    Пять тысяч строк по сто символьным переменных , но это не реальный скрипт, он тестит только /RenameMinimum Au3Stripper, на реальных скриптах дай бог получить выигрыш  1-2 % скорости.
     
     
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 23:09 03-09-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Всё-таки это получается синтетическим тестом
     
    2All
    Некоторые утилиты имеют код выхода, типа как Au3Check:

    Цитата:
    0: success: no errors or warnings
    1: warning(s) only
    2: syntax error(s)
    3: usage or input error

    можно ли прикрутить подобную фичу к скрипту AutoIt?
    Попутно возник вопрос: как прочитать код выхода утилиты, запущенной скриптом?
     
    P.S. Офсайт неожиданно лежит.
     
    Добавлено:
    По первому вопросу сообразил - Exit с цифрой, как прочитать пока нет.
     
    Добавлено:
    RunWai возвращает код выхода. Ппц, я не выспался, прошу прощения.

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 12:21 05-09-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, почему не работает горячая клавиша:
    GUI с Opt('GUIOnEventMode', 1), необходимо остановить работающую функцию, добавляю Dummy и горячую клавишу

    Код:
        $Dummy = GUICtrlCreateDummy()
        GUICtrlSetOnEvent($Dummy, '__OnStop')
        Local $aAccelKeys[1][2] = [['{Esc}', $Dummy]]
        GUISetAccelerators($aAccelKeys)

    глобальную переменную

    Код:
    Global $fReturn = True

    в цикле в функции, которую нужно остановить, добавляю условие

    Код:
            If $fReturn = False Then ExitLoop

    При работе функция блокирует кнопки, одну использую для проверки

    Код:
    Func __OnStop()
        If GUICtrlGetState($B2) = $GUI_DISABLE Then
            If MsgBox(4 + 4096, 'JPGtest.au3', 'Остановить проверку?', '', $hGui) = 6 Then
                $fReturn = False
            EndIF
        EndIf
    EndFunc

    Но почему-то не работает.
     
    Скрипт целиком (всё включено).

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 02:04 06-09-2015 | Исправлено: Skif_off, 02:05 06-09-2015
    NIKZZZZ



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

    Цитата:
    почему не работает горячая клавиша:  

    В режиме GUIOnEventMode может выполняться только одна Event функция , пока она не отработает до конца, __OnStop() не запустится.
     
    Поэтому запускать функцию надо не напрямую, а примерно так.
     

    Код:
    Global $fStartWork=False
    ....
    GUICtrlSetOnEvent(-1, 'StartWork')
    ....
    While 1
       If $fStartWork=True Then
         $fStartWork=False
         Work()
       EndIf
    Wend
     
    Func StartWork()
      $fStartWork=True
    EndFunc
     
    Func Work()
    ......

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 08:29 06-09-2015 | Исправлено: NIKZZZZ, 08:32 06-09-2015
    Sinclair83

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите как правильно подставить $H на место xxx?

    Код:
    $H = $CmdLine[1]
    WinGetHandle('[CLASS:xxx]')

    Всего записей: 757 | Зарегистр. 07-01-2009 | Отправлено: 09:32 06-09-2015
    NIKZZZZ



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

    Код:
    WinGetHandle('[CLASS:' & $H & ']')  

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 09:48 06-09-2015
    Sinclair83

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    ОТЛИЧНО! Спасибо БОЛЬШОЕ.  

    Всего записей: 757 | Зарегистр. 07-01-2009 | Отправлено: 10:30 06-09-2015
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Спасибо, упустил из внимания этот нюанс. Тут предложенный вариант с While...WEnd не прокатит, уйдёт больше времени, попробую AdlibRegister() (HotKeySet() не нравится).
    И, наверное, переделаю обратно в GUI MessageLoop (первый скрипт в режиме GUI OnEvent, непривычно), на скорость это не влияет ведь?
     
    Добавлено:
    Не понимаю, добавил

    Код:
    AdlibRegister('__Stop', 500)
    ...
    Func __Stop()
        If _IsPressed('1B', $hDLL) And GUICtrlGetState($B2) = $GUI_DISABLE Then
            If MsgBox(4 + 4096, 'JPGtest.au3', 'Остановить проверку?', '', $hGui) = 6 Then
                $fReturn = False
            EndIF
        EndIf
    EndFunc

    не работает, попробовал добавить проверку в For...Next

    Код:
    If _IsPressed('1B', $hDLL) And GUICtrlGetState($B2) = $GUI_DISABLE Then __Stop()

    тоже не срабатывает. Опять что-то упускаю?

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 11:13 06-09-2015
    NIKZZZZ



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

    Цитата:
    Тут предложенный вариант с While...WEnd не прокатит, уйдёт больше времени

    Не понял, на что уйдет время? На скорость выполнения Work() это никак не скажется.
    А причина та-же.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 13:32 06-09-2015
    Skif_off

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

    Цитата:
    Не понял, на что уйдет время? На скорость выполнения Work() это никак не скажется.

    Вот теперь, кажется, начинает доходить пример )
    А почему _IsPressed() внутри For...Next не срабатывает? Потому что не нативная?
     
    Добавлено:
    Заработало, _IsPressed() ни к чему, большое спасибо, буду допиливать нюансы

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 13:55 06-09-2015
    dialmak



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    All
    Есть прожка - она качает из инета пару файликов. Общим размером файлики около 1.5 гига.
    Проблема в том, что она это делает молча в консоли и непонятна скорость скачивания.
    Кто подскажет как можно это дело проконтролировать и выдать на экран скорость и размер скачанных уже файлов. Второе конечно можно узнать ибо куда качает известно, но со скоростью чего-то у меня не выходит...

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 02:21 09-09-2015 | Исправлено: dialmak, 02:21 09-09-2015
    NIKZZZZ



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dialmak
    Ну, как-то так

    Код:
    $iSize1 = 0
    $iSize2 = 0
    $sFile = 'xxx' ; скачиваемый файл
    $h = Run('...') ; запуск утилиты
    While ProcessExists($h)
        Sleep(500)
        $iSize2 = FileGetSize($sFile)
        ConsoleWrite('Скачано ' & $iSize2 & ' байт Скорость ' & ($iSize2 - $iSize1) / .5 & ' байт с секунду' & @CRLF)
        $iSize1 = $iSize2
    WEnd

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 08:46 09-09-2015
    dialmak



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

    Цитата:
    Ну, как-то так  

    Так не выйдет.
    Прожка качает многопоточно и вначале в буфер. Причем буфер не один и всегда разный. Собирает файл только тогда, когда он готов. Если файл большой - скорость 0 всегда.  
    К тому же файлы качает разные и имена их мне неизвестны...

    Всего записей: 14007 | Зарегистр. 27-04-2013 | Отправлено: 10:59 09-09-2015
       

    Страницы: 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 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 3)
    gyra (23-01-2020 10:51): AutoIT (Часть 4)


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

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru