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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    comrades, что-то затупил, подскажите, пожалуйста:
    читаю вывод консольной программы, если всё нормально, $sOut = "", ошибок несколько штук и не хочется искать их в выводе, поэтому как лучше/канонiчно

    Код:
    If $sOut <> "" Then
        ;пишем в лог
    Else
        ContinueLoop
    EndIf
    ; или
    If $sOut = "" Then
        ContinueLoop
    Else
        ;пишем в лог
    EndIf

    ?

    Всего записей: 6484 | Зарегистр. 28-01-2008 | Отправлено: 06:26 18-09-2014 | Исправлено: Skif_off, 06:27 18-09-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off,
    Можно так.
    Код:
    Local $sOut
     
    For $i = 1 To 100
        If Random(0, 2, 1) = 2 Then $sOut = 'error ' & $i
        If $sOut Then ConsoleWrite($sOut & @LF);Write log
        $sOut = ''
    Next

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 09:26 18-09-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Спасибо, но не то Интересует, как правильнее (в смысле - как бы это сделал нормальный программист) организовать условный оператор при условии, что значение переменной $sOut может быть пустым? По сути получается, что оба варианта - одно и тоже, но что-то я завис Или разницы нет совершенно?
     
    Надо всё-таки открыть тему Глупые и/или невнятные вопросы от Skif_off )

    Всего записей: 6484 | Зарегистр. 28-01-2008 | Отправлено: 09:39 18-09-2014
    ne_viens

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Цикл автоматически подразумевает continue, обычно обрабатывают только исключение из правила.

    Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 09:59 18-09-2014
    Pasha_ZZZ



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

    Код:
    If $sOut <> "" Then
        ;пишем в лог
    EndIf

    Всего записей: 12399 | Зарегистр. 11-03-2002 | Отправлено: 10:02 18-09-2014
    AZJIO



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

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 02:51 19-09-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Спасибо, понял, исправил
     
    Столкнулся со странной проблемой: по мотивам батника сделал скрипт (под спойлером, чтобы не копипастить целиком), но на рабочей Win7x64 рандомно виснет на каком-нибудь файле.
    Запускал на одном и том же наборе файлов в WinPE (на базе WinXP SP2/SP3, 7 и 8.1 x86/x64), версии AutoIt 3.3.8.1 и 3.3.12.0, - отлично отрабатывает. На нормальной WinXP SP3 и в виртуалке на Win7x64 (чистая, без софта, только обновления) - тоже нормально. Посмотрел зависимости - файлы совпадают по версиям. В чем может быть дело?

    Всего записей: 6484 | Зарегистр. 28-01-2008 | Отправлено: 04:41 20-09-2014
    madmasles

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

    Цитата:
    рандомно виснет на каком-нибудь файле.

    Виснет jpegtran.exe?

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 11:44 20-09-2014
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ребята, назрел такой вопрос, как наиболее корректно проверить присутствие секций в "*.ini-файле", каждой секции отдельно и, если хотя бы одна секция не найдена, сообщить об этом и завершить скрипт?

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 16:39 20-09-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Artem_Butenko
    Цитата:
    проверить присутствие секций в "*.ini-файле"
    ИМХО, можно получить массив имен секций (IniReadSectionNames) и проверить наличие или сравнить их кол-во с эталоном.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 16:44 20-09-2014 | Исправлено: madmasles, 16:45 20-09-2014
    Skif_off

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

    Цитата:
    Виснет jpegtran.exe?

    Честно говоря, не понял. Как проверить? Копался в ProcessHacker - не вижу какой-то особенной разницы между ОС, в которой работает, и моей. Сливал как-то x64_dbg ради любопытства, есть SimpleProgramDebugger от NirSoft, но никогда не пользовался подобным софтом.
     
    Если скрипт скомпилировать, то в диспетчере задач не отвечает скрипт. Батник там же отрабатывает нормально, т.е. jpegtran.exe, по идее, может шустро обрабатывать пачку.

    Всего записей: 6484 | Зарегистр. 28-01-2008 | Отправлено: 17:39 20-09-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off,
    Попробуйте запустить не скомпилированный скрипт с
    Код:
    Opt("TrayIconDebug", 1)
    и определить в каком месте скрипт зависает.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 17:48 20-09-2014
    Artem_Butenko



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
     
    Можно пример, буду очень благодарен, наконец завершу ThinApp Sandbox Cleaner.

    Всего записей: 711 | Зарегистр. 19-02-2008 | Отправлено: 18:58 20-09-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Получилось ожидаемо: в чтении вывода

    Код:
    $sOut &= StderrRead($iPID)

    Т.е. всё-таки jpegtran.exe виснет?

    Всего записей: 6484 | Зарегистр. 28-01-2008 | Отправлено: 20:34 20-09-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Загрузился в безопасном режиме - та же фигня, причем скомпилированная версия начинает виснуть пораньше. Был бы не SSD, загрузился бы в WinPE, запустил бы DMDE и забил нулями от MBR и по самую макушку

    Всего записей: 6484 | Зарегистр. 28-01-2008 | Отправлено: 10:13 21-09-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Artem_Butenko
    Цитата:
    Можно пример
    Можно примерно так сделать. Подробнее...
     
     
    Добавлено:
    Skif_off
    Цитата:
    Получилось ожидаемо: в чтении вывода
    А если сделать примерно так? Подробнее...

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 11:09 21-09-2014 | Исправлено: madmasles, 14:20 21-09-2014
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Спасибо, думал сделать что-нибудь подобное еще пару дней назад, только такие файлы записывать в отдельный файл и попробовать прогнать еще раз. Правда, это всё равно не решает проблемы с ОС(?). С временем тоже не всё понятно.
     
    Добавлено:
    Прогнал 60 файлов от 8 до 10 Мб - в среднем 4,59 мс на файл.
     
    Добавлено:
    Сделал так, попробую натравить на большее количество файлов.
     
    Добавлено:
    Что-то не то твориться: одновременно до 2х десятков копий jpegtran.exe появляется. Возникает вопрос - ну на фига взялся?

    Всего записей: 6484 | Зарегистр. 28-01-2008 | Отправлено: 12:41 21-09-2014 | Исправлено: Skif_off, 12:57 21-09-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Skif_off
    Цитата:
    Что-то не то твориться
    Поправил код, в нем ошибка была.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 14:20 21-09-2014
    yozhic



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

    Код:
    GUIRegisterMsg(0x020A, "WM_MOUSEWHEEL")

    Тут при вращении колёсика мыши будет выполняться функция – одна для всего GUI. Существует ли что-то наподобие GUICtrlRegisterMsg? То есть чтобы на вращение колёсика реагировал не весь GUI, а только один элемент?
    Например, таймер. Три поля Input: часы, минуты, секунды. Возможно ли так сделать, чтобы когда курсор над полем «Часы», при вращении колёсика менялось бы значение поля «Часы», над полем «Минуты» – минуты и т.п. ?

    Всего записей: 2773 | Зарегистр. 20-03-2008 | Отправлено: 23:22 22-09-2014 | Исправлено: yozhic, 23:23 22-09-2014
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    yozhic,
    Проверяйте в функции WM_MOUSEWHEEL через GUIGetCursorInfo() над каким элементом находится курсор и, если находится над нужным, меняйте в нем значение.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 23:55 22-09-2014
       

    Страницы: 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