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

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

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

    Цитата:
    Сделай либо горячую клавишу Esc, либо проверяй сообщения окна на участках кода где требуется заавершить скрипт.

    хоткей можно, но хочу кнопку. добавил в цикл функции
       $nMsg = GUIGetMsg()
       if $nMsg=$GUI_EVENT_CLOSE then Exit
    но там все время регистрируется -11 (движение мыши)
    -3 никогда не приходит, навреное не успевает совпасть и -11 забивает
    по поводу второго варианта, хотелось бы разобраться
        Local $nNotifyCode = BitShift($wParam, 16)
        Local $nID = BitAND($wParam, 0xFFFF)
    что делает? какой смысл делать И на всех 11111111111....?
     
            Case $nButtonExit
                Switch $nNotifyCode
                    Case $BN_CLICKED
                        _Exit()
                EndSwitch
    если я правльно понял это же работает как
    Case $nButtonExit
    if $nNotifyCode=$BN_CLICKED then _Exit
     
    Func _Exit()
        GUIDelete()
        Exit
    EndFunc  
     
    а почему нельзя было все это вписать в проверку выше?
    if...then
        GUIDelete()
        Exit
    endif
     
    я не очень опытен в этом))) но хочу разобраться

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



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

    Цитата:
    а почему нельзя было все это вписать в проверку выше?  
    потому что _Exit() одна строка, а GUIDelete() и Exit - две строки. Хотя можно и без GUIDelete().
    Всё можно, пиши как тебе удобно.
     

    Цитата:
    добавил в цикл функции  
       $nMsg = GUIGetMsg()  
       if $nMsg=$GUI_EVENT_CLOSE then Exit  
    Проблема в том что цикл засыпает на 1 сек. Поставь Sleep(10) вместо 1000 и сработает. Если добавить задержку более 20 в главном цикле где опрашивается гуи, то кнопки начнуть через раз срабатывать, чем болше Sleep тем меньше вероятность срабатывания кнопки. Имеется виду те кнопки, которые работают не через WM_COMMAND, а который в цикле.

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Dim $AccelKeys[2][2] = [["{ENTER}", $ButtonStart],["{ESC}",$ButtonEnd]]
    забил две кнопки, проблема в том, что пока работает фукция моего "таймера"
    GUISetAccelerators не обрабатываются )))
    запуск происходит по ЕНТЕР, а ЕСК уже не работает
    хотя нажатие кнопки $ButtonEnd мышой обрабатывается
     
    ну нет в жизни счастья ))))
     
    кажется понимаю
    Case $BN_CLICKED
    работает только при щелчке мышью
    а какой CASE тогда будет для фукции кнопки вызваной через  
    Dim $AccelKeys[2][2] = [["{ENTER}", $ButtonStart],["{ESC}",$ButtonEnd]]
    GUISetAccelerators($AccelKeys)
    по нажатию ESC
    ?
     
        Switch $nID
            Case $ButtonEnd
    ;~             Switch $nNotifyCode
    ;~                 Case $BN_CLICKED
                            if $worked then $worked = False
    ;~             EndSwitch
        EndSwitch
     
    а так не опасно использовать??? без проверки $nNotifyCode

    Всего записей: 1464 | Зарегистр. 03-08-2003 | Отправлено: 11:21 10-04-2011 | Исправлено: LaVas_ki, 12:05 10-04-2011
    AZJIO



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

    Цитата:
    а так не опасно использовать??? без проверки $nNotifyCode
    без проверки клика не опасно, ведь всё равно функция срабатывает только при клике, это WM_NOTIFY срабатывает при наведении, подробнее смотри в коллекции папка "WM-Сообщения Windows" (поиском)

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 13:55 10-04-2011
    mezi



    Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Здравстуйте!
    Можете дать скрипт на авто-активацию например игры ?

    ----------
    Finita la comedia!
    Come to the dark side. We have cookies.

    Всего записей: 343 | Зарегистр. 18-12-2010 | Отправлено: 20:41 10-04-2011 | Исправлено: mezi, 20:45 10-04-2011
    RuS_UA



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Граждане, подскажите пожалуйста.  
    Как найти позицию X,Y определённого текста в активном окне и на всём экране.
    Буду благодарен.

    Всего записей: 338 | Зарегистр. 04-01-2008 | Отправлено: 21:49 10-04-2011
    AZJIO



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

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 22:07 13-04-2011
    extremeextreme

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как узнать активное окно у юзера ?
     
    Добавлено:
    Как узнать какое окно активное у юзера ? (Это может быть игра, и плеер, и браузер)
    Задача такая:
    Нужно узнать какое окно активное, запомнить,потом свернуть все окна.
    Выдать собщение и вернуть только активное окно.

    Всего записей: 3 | Зарегистр. 15-04-2011 | Отправлено: 21:58 15-04-2011
    AZJIO



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

    Код:
    $act=WinGetTitle("[active]")
    WinMinimizeAll()
    MsgBox(0, 'Сообщение', 'Свернул всё')
    WinActivate($act)

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 03:35 16-04-2011 | Исправлено: AZJIO, 03:36 16-04-2011
    extremeextreme

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    а есть ли какая то получше команда ,чем WinGetTitle ?
    Хотелось бы определять четко (100%),что ето именно ето окно.
    Есть ли какая то команда котороя бы сразу проверяла активность окна по нескольким параметрам
    например по: Title,Class...

    Всего записей: 3 | Зарегистр. 15-04-2011 | Отправлено: 16:25 16-04-2011
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    extremeextreme
    вместо WinGetTitle используй WinGetHandle.

    Код:
    $act=WinGetHandle("[active]")
    WinMinimizeAll()
    SplashTextOn('Сообщение', 'Свернул всё', 200, 80)
    Sleep(100)
    WinActivate($act)
    Sleep(1000)
    SplashOff()

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 16:47 16-04-2011 | Исправлено: AZJIO, 16:50 16-04-2011
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, можно ли нарисовать иконку на заголовке окна (там, где распологаются кнопки свернуть, закрыть)?

    Всего записей: 3265 | Зарегистр. 30-05-2007 | Отправлено: 19:20 17-04-2011
    TY999



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Наткнулся  как то тут в предшествующей теме на обсуждение скрипта пункта  менюна ярлыке Открыть каталог

    Цитата:
    Мне нужно в контекстном меню ярлыка сделать пункт "Открыть каталог", выбрав его происходит тоже что и "Свойства ярлыка > Найти объект"
    http://forum.ru-board.com/topic.cgi?forum=5&topic=29240&start=1880%F2%F3%F2#4
    файлик с готовым скриптом просто запустить
    Добавляет пункт  в  меню  ярлыков *найти обьект* (аналог  одноименной кнопки в свойствах  ярлыка)
    сделано на базе скрипта взятого от  сюда Серый форум  автор wisgest  
    чуть подкорректировал под себя
    http://ifolder.ru/23028479
    9ff4492cf4d39ccaee5763ed2f1f561b *FindTarget.rar
    ccf36809a748850c1572b9cc32c1da89 *FindTarget.exe

    Всего записей: 60 | Зарегистр. 06-09-2003 | Отправлено: 21:55 17-04-2011 | Исправлено: TY999, 21:59 17-04-2011
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    TY999
    Кстати? тот вариант уже подправлен, вместо $CmdLineRaw > $CmdLine[1]
    А что в *.js нельзя добавить авторегистрацию в реестре и копирование себя в системный каталог? А то был бы скриптик сам в себе с установкой в один клик и не требующий интерпретатор (удалять думаю не потребовалось бы).

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 02:34 18-04-2011
    extremeextreme

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

    AZJIO, большое спасибо.
     
    Как узнать в активном окне запущена ли какая нибудь игра?
    Думал как нибудь так:
    If WinActive ("На весь екран") and ProcessExists("любые символы.exe") Then
    Send ("Pause") или send("{Esc}")
    EndIf  
     
    ..но на весь экран может быть не только игра запущенна,
    а процессы вообще получается бессмысленно так как все названия процессов кончаются на .exe.

    Всего записей: 3 | Зарегистр. 15-04-2011 | Отправлено: 11:35 18-04-2011
    AZJIO



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

    Код:
    $act=WinGetHandle("[active]")
    $state = WinGetState($act)
    If BitAnd($state, 32) Then MsgBox(0, "Сообщение", "Окно развёрнуто")

     
    Определить по процессу можно в цикле перебрав некий список возможных вариантов.


    ConverterCMD - утилита для выкладывания файлов BAT, CMD на форум с использованием цветовой темы для ключевых слов.

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 19:31 18-04-2011 | Исправлено: AZJIO, 03:30 20-04-2011
    msdenis



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день.
    Есть несколько вопросов.
     
    1. Ищу короткий максимально сжатый и понятный код для подсчета MD5.
    По иронии судьбы сам такой написал, но au3 сохранил в Темпе на системном разделе с переустановкой ОС все к чертям...
     
    Видел пример с DLL, но в dll вообще ни пол грамма не понимаю.
     
     
    2. Возможно есть такой материал, что доступно разжовывает работу с dll? Буквально что бы по полочкам объяснялось что-куда...
     
    Ссылка в шапке на "Tutorial on DllCall() & DllStructs" - ерунда какая-то.

    Всего записей: 30 | Зарегистр. 14-03-2008 | Отправлено: 09:04 21-04-2011
    ynbIpb



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

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 09:20 21-04-2011 | Исправлено: ynbIpb, 09:21 21-04-2011
    msdenis



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Повторюсь, в Длл ничего не смыслю.
    Я не понимаю, как она работает.

    Всего записей: 30 | Зарегистр. 14-03-2008 | Отправлено: 09:38 21-04-2011
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    msdenis
    максимально короткий для файла
    Код:
    #include <Crypt.au3>
    MsgBox(0, 'MD5 файла file.dll в текущей папке', _Crypt_HashFile(@ScriptDir&'\file.dll', $CALG_MD5))

    Аналогично _Crypt_HashData для данных в виде текста в переменной. Если нужно разбираться как работает, то открыть \AutoIt3\Include\Crypt.au3 и разбираться сколько угодно.

    Всего записей: 4407 | Зарегистр. 03-05-2006 | Отправлено: 09:55 21-04-2011 | Исправлено: AZJIO, 10:02 21-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