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

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



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    К сожалению по хэндлу утиля не возвратила путь. А вообще там главное класс окна, остальное информационно, чтоб понятней было, не всем же удобно выбирать по классу. Если прога позволяет себя запустить два раза, то класс окна будет одинаковый, поэтому не важно даже ошибочность определения пути для одинаковых по классу прог. Перейти на детект имени окна не имеет смысла, тот же NP++ при переключении вкладок меняет имя окна, аналогично и с браузерами. А имя то ещё сохраняется в  файл настройки. Пока у меня стабильно работает, и в квип и в оперу и блокноты вставляет без проблем, единственное хочется избранное прикрутить, чтобы выбор был удобен как с выбором библиотеки.

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 16:33 04-04-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Цитата:
    К сожалению по хэндлу утиля не возвратила путь.
    Функция _ProcessGetPath(), которую Вы используете, немного отличается от функции _WinAPI_GetProcessFileName() из библиотеки YashiedWinAPIEx.au3. У меня функция _WinAPI_GetProcessFileName() всегда срабатывала без ошибок. Может быть в этом дело?

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 17:02 04-04-2011
    Cancer_to_Shanghai



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    задача такая. В одной игре надо неограниченное время долбить по 2м кнопкам: боковым стрелкам.
    Просто? но геморно.
    надо как-то автоматизировать сей процесс.  
     
    Сабж темы поможет мне?

    Всего записей: 612 | Зарегистр. 03-09-2010 | Отправлено: 17:19 04-04-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Cancer_to_Shanghai
    Цитата:
     В одной игре надо неограниченное время долбить по 2м кнопкам
    Желательно больше подробностей.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 17:21 04-04-2011
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    Я знал куда намёк клонится и уже готовил речь... но подумав оставил речь... подробнее здесь.

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 17:21 04-04-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO,
    Даже не знаю, как ответить...  

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 19:03 04-04-2011 | Исправлено: madmasles, 19:04 04-04-2011
    Cancer_to_Shanghai



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
     
    Ну там тупая мини-игра, которую я не могу пройти месяц.
    Смысел не ясен до конца. НИКОМУ!
     
    надо жать на  стрелки вправо-влево. а на экране в это время буду бомбочки взрываться.
    долбить надо каждую секунду обеими кнопками.
    О как!
    Сабж сумеет?

    Всего записей: 612 | Зарегистр. 03-09-2010 | Отправлено: 19:17 04-04-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Cancer_to_Shanghai
    Попробуйте. Должна посылать в окно игры по очереди "Влево" - "Вправо" с интервалом 0,1 секунды. Проверял на Блокноте.

    Код:
    Global $hWin = 0, $fLeft = False, $fClick = False, $fPause = False, _
            $sTitle = 'Заголовок окна Вашей игры' ;сюда впишите заголовок Вашей игры. Это важно
    Break(0)
    TraySetToolTip('Кнопка Ctrl + 2 - пауза, повторное нажатие - продолжить' & @LF & 'Кнопка Esc - выход')
    HotKeySet('{Esc}', '_Exit') ;Esc - выход
    HotKeySet('^{2}', '_Pause') ;Ctrl + 2 - пауза, повторное нажатие - продолжить.
    While 1
        If Not $fPause Then
            If Not $fClick Then
                If WinExists($sTitle) Then
                    $hWin = WinGetTitle($sTitle)
                    $fClick = True
                EndIf
            EndIf
            If $fClick Then
                $fLeft = Not $fLeft
                If $fLeft Then
                    ControlSend($hWin, '', '', '{LEFT}')
                Else
                    ControlSend($hWin, '', '', '{RIGHT}')
                EndIf
                If Not WinExists($hWin) Then
                    $fClick = False
                EndIf
            EndIf
        EndIf
        Sleep(100) ;интервал между кликами влево-вправо (1000 - одна секунда)
    WEnd
     
    Func _Exit()
        Exit
    EndFunc   ;==>_Exit
     
    Func _Pause()
        $fPause = Not $fPause
        If $fPause Then
            ToolTip('Пауза в работе', 0, 0)
        Else
            ToolTip('')
        EndIf
    EndFunc   ;==>_Pause

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 20:11 04-04-2011 | Исправлено: madmasles, 23:22 04-04-2011
    Cancer_to_Shanghai



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    оооооо, ужо?
     
    Я ещё и сабж не ставил и не знаю, с чем его едят

    Всего записей: 612 | Зарегистр. 03-09-2010 | Отправлено: 20:40 04-04-2011
    Cancer_to_Shanghai



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Изучаю мануал v3.2.5.4    Valery Ivanov.
    Местами кое-чего пониманто.
     
    http://sderni.ru/57263 - такой скрип скормить?
    Запускаю игру, потом этот скрипт. И - отдыхаю?
     
    Добавлено:
    http://sderni.ru/57263 - не пашет этот скрипт.
     
    Ctrl + 2 - жму в левом вверхнем углу всплывает: пауза в работе.
    При повторном нажатии - значит - работает, но эффекта нет.
     

    Всего записей: 612 | Зарегистр. 03-09-2010 | Отправлено: 09:24 05-04-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Cancer_to_Shanghai
    С помощью AutoIt Window Info посмотрите, какой заголовок у окна. Я не уверен, что он Airline2.exe, скорей всего он другой.
    И, если можно, дайте ссылку на игру.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 11:44 05-04-2011 | Исправлено: madmasles, 11:45 05-04-2011
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добавил в скрипт "Другая версия" команду проверки версии AutoIt3
     
    Run('"'&@GUI_DRAGFILE&'" /AutoIt3ExecuteLine "MsgBox(0, ""'&StringRegExpReplace(@GUI_DRAGFILE, '(^.*)\\(.*)$', '\2')&' (Version AutoIt3)"", @AutoItVersion)"')
     
    Есть ли возможность узнать - является ли файл скомпилированным скриптом AutoIt3, чтобы сделать игнорирование на иные EXE-шники? Иначе иные запускаются.
     
    Если отступить 8 символов от конца файла exe, то там текст AU3, может их использовать?

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 15:20 09-04-2011 | Исправлено: AZJIO, 15:23 09-04-2011
    NIKZZZZ



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

    Цитата:
    Есть ли возможность узнать - является ли файл скомпилированным скриптом AutoIt3

    @compiled

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 15:26 09-04-2011
    LaVas_ki

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

    Всего записей: 1464 | Зарегистр. 03-08-2003 | Отправлено: 16:25 09-04-2011
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    Нет, это требует запуска, у меня задача определить внешне exe-файл без запуска. Я слышал у них есть типа заголовочной информации, по примеру как PEiD.exe определяет тип exe, чем упакован, на каком языке написан. Я сейчас подтвердил свою версию о том что конец каждого файла (8 символов) заканчивается AU3!EA06 - по этой инфе определение, что файл написан AutoIt3-ом. Проверил десяток EXE с разными версиями AutoIt3 и разным сжатием.
     
    Добавлено:
    LaVas_ki
    Посмотри GUISetAccelerators. Русскую версию справки можешь взять тут, в старой русской справке нет этой команды.

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 16:27 09-04-2011
    madmasles

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Цитата:
    Есть ли возможность узнать - является ли файл скомпилированным скриптом AutoIt3
    Посмотрите здесь.

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 17:09 09-04-2011
    LaVas_ki

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

    Цитата:
    GUISetAccelerators.

    спасибо, помогло
    а вот такой еще вопрос - нажимаю кнопку, в скрипте начинается какое то действие выполняться...
    грубо говоря
            Case $GUI_EVENT_CLOSE
                Exit
            Case $ButtonStart
                SomeFuction()
    но проблема в том, что пока функция не отработает не будут отрабатываться другие сообщения ($GUI_EVENT_CLOSE)
    т.е. скрипт нельзя закрыть, нельзя отменить операцию...
     
    в обычной программе я бы делал это в другом потоке и передавал ему состояние через переменые допустим по фукциям на кнопках окна
     
    а как в аутоит это сделать???
    простой пример - жму кнопку, начинается отсчет, хочу отменить отсчет нажатием кнопки
    щас же пока отсчет не закончится, скрипт не будет отрабатывать ни закрытие, ни другие кнопки

    Всего записей: 1464 | Зарегистр. 03-08-2003 | Отправлено: 20:38 09-04-2011
    AZJIO



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

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 22:39 09-04-2011
    madmasles

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

    Всего записей: 1277 | Зарегистр. 25-09-2008 | Отправлено: 23:48 09-04-2011 | Исправлено: madmasles, 23:49 09-04-2011
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    madmasles
    LaVas_ki
    Ну тогда на этом примере окончательный вариант с закрытием именно на кнопке закрытия окна Читать дальше

    Всего записей: 4413 | Зарегистр. 03-05-2006 | Отправлено: 08:47 10-04-2011
       

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