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

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

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    ещё лучше! спасибо!

    Всего записей: 318 | Зарегистр. 20-12-2005 | Отправлено: 00:54 07-11-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    EagleSH
    Есть вариант вызвать мессагу, по принципу как сделано у меня в скриптах "Stopwatch - Секундомер" и "The_generator_of_melodies", там внутри скрипта вложен скрипт в виде переменной, когда понадобится запустить его он сохраняется в темповой папке скриптом и вызывается с параметром /AutoIt3ExecuteScript, вот так:
    $pid=Run(@AutoItExe&' /AutoIt3ExecuteScript "'&@TempDir&'\message.au3"')
     
    В данном случае @AutoItExe это полный путь к файлу project.exe

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 01:31 07-11-2010
    EagleSH

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

    Всего записей: 318 | Зарегистр. 20-12-2005 | Отправлено: 10:25 07-11-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    EagleSH
    Посмотри готовый скрипт-пример
     
    _________________________
    Обновил кеулогер, или вот готовый EXE

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 20:39 07-11-2010 | Исправлено: AZJIO, 05:02 09-11-2010
    EagleSH

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

    Всего записей: 318 | Зарегистр. 20-12-2005 | Отправлено: 13:31 08-11-2010
    AZJIO



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

    Код:
    Global $Pause=0
    HotKeySet("!8", "_Pause") ;Alt+8
     
    Func _Pause()
        If $Pause = 0 Then
            $Pause = 1
            DllCallbackFree($hStub_KeyProc)
        Else
            $Pause = 0
            $hStub_KeyProc = DllCallbackRegister("_Key_Proc", "int", "int;ptr;ptr")
        EndIf
    EndFunc
    на DllCallbackFree вылетает.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 02:37 09-11-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 02:37 09-11-2010
    Цитата:
    на DllCallbackFree вылетает

    Попробуй так:
     

    Код:
    Func _Pause()
        If $Pause = 0 Then
            $Pause = 1
            If $hStub_KeyProc Then
                DllCallbackFree($hStub_KeyProc)
                $hStub_KeyProc = 0
            EndIf
        Else
            $Pause = 0
            $hStub_KeyProc = DllCallbackRegister("_Key_Proc", "int", "int;ptr;ptr")
        EndIf
    EndFunc


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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 10:42 09-11-2010
    frb_noname

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Скриптом заношу в БД краткое описание файла.  
    Описание получаю путем копирования и вставки в inputbox части текста открытого документа. Само собой разумеется, что сюда попадают и пробелы и перевод строки и т.д.
    В результате,  не весь скопированный текст помещается в inputbox.
     
    Вопрос в том, как получить в переменную ВЕСЬ скопированный текст ?

    Всего записей: 47 | Зарегистр. 03-11-2008 | Отправлено: 14:03 09-11-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Нет, сам по себе DllCallbackFree($hStub_KeyProc) вылетает при первом вызове, т.е. добавленное условие будет верным.
     
    ________________
    Узнать версию AutoIt3 внутри скомпилированного EXE можно так:
    на батник с таким содержанием
    Код:
    start "" "%~f1" /AutoIt3ExecuteScript "%~dp0version.au3"
    кинуть EXE
    с батником должен быть скрипт version.au3 с таким содержанием:
    Код:
    MsgBox(0, 'Версия AutoIt3', @AutoItVersion)

     
    А вот ещё полезный батник
    taskkill.exe /F /IM AutoIt3.exe
    если сделать на него ярлык и в свойствах указать "Быстрый вызов", то помогает снимать зацикленные/зависшие процессы автоита при тестах, а также скрипты, в которых "Закрыть" не работает.
     
    NIKZZZZ
    Хотел RegToScript.exe добавить в реестр чтоб из контекстного меню работала, но не получается, пишет что не найден RegToScript.ini

    Код:
    Reg.exe add "HKEY_CLASSES_ROOT\regfile\shell\mconv\command" /v "" /t REG_SZ /d "\"%~dp0RegToScript.exe\" /au3 \"%%1\" \"%%1.au3\"" /f

     
    Добавлено:
    frb_noname
    $ES_MULTILINE 0x0004 Многострочный элемент редактирования. Стандартный режим - одна строка ввода.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 14:32 09-11-2010
    ViSiToR



    Silver Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    AZJIO 14:32 09-11-2010
    Цитата:
    добавленное условие будет верным

    Ты проверял то что я предложил? я не с потолка это взял, у меня уже было такое.

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

    Всего записей: 3251 | Зарегистр. 01-04-2006 | Отправлено: 15:29 09-11-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ViSiToR
    Да проверял 2 раза. Сейчас ещё раз проверил. И на других версиях автоита проверил.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 17:10 09-11-2010
    NIKZZZZ



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

    Цитата:
    Хотел RegToScript.exe добавить в реестр чтоб из контекстного меню работала

    RegToScript

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 12:41 10-11-2010
    kpuk



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    гуру подскажите как мне выполнить в автоите, не создавая временных командных файлов(*.cmd или *.bat) строку такого вида с русскими букавами:
    netsh interface ip set address name="Подключение по локальной сети" static 10.253.1.245 255.255.255.0 10.253.1.68
    Напомню, на всякий, что проблема возникает в том, что командному интерпритатору надо кодировку дос, а автоит выполняет с ascii !


    ----------
    Мой дед говорил ''делай добро и бросай его в воду,
    Оно не пропадёт, добром к тебе вернётся...''

    Дружественный хостинг. Мой выбор!

    Всего записей: 1099 | Зарегистр. 07-03-2004 | Отправлено: 00:22 11-11-2010
    ynbIpb



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kpuk, а что если имя подключения иное? неизвестное?
    Как самый простой вариант: заранее переименовать подключение в англ.
    Или вариант: Заранее поместить в переменную текст с названием в нужной кодировке: $sName = "Џ®¤Є«озҐ-ЁҐ Ї® «®Є «м-®© бҐвЁ"
    Посложнее: Прочитать спосок подключений, из ipconfig и выбрать из него имя основываясь например на MAC адресе или выбрать первое в списке. Читать можно так:

    Код:
    #include <Constants.au3>
    $hCMD = Run(@ComSpec & " /c " & 'ipconfig', "", @SW_SHOW, $STDOUT_CHILD)
    $sLog = ""
    While 1
        $sLog &= StdoutRead($hCMD)
        If @error Then ExitLoop
        Sleep(10)
    WEnd
    MsgBox(0, "STDOUT read:", $sLog)
    Выбирать нужный фрагмент текста из этого нужно с помощью StringRegExp, но я нём не силён.
    Я вот так бы сделал (Win7):
    Код:
    $ipos = StringInStr ($sLog, "Ethernet adapter ") ; определяем позицию фрагмента "Ethernet adapter"
    $sLog = StringTrimLeft ($sLog, $ipos + 16) ; отрезаем всё что слева + сам фрагмент "Ethernet adapter"
    $ipos = StringInStr ($sLog, ":") ; определяем позицию двоеточия (оно идёт сразу после названия соединения)
    $sLog = StringLeft ($sLog, $ipos - 1) ; читаем фрагмент от начала, до двоеточия (это наше название) и отбрасываем само двоеточие
    MsgBox(0, "STDOUT read:", $sLog)

     

    Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 08:58 11-11-2010 | Исправлено: ynbIpb, 09:18 11-11-2010
    Kar1son

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    не работает TrayTip (WinXP Pro SP3), в чем может быть дело?

    Всего записей: 187 | Зарегистр. 23-08-2006 | Отправлено: 15:04 11-11-2010
    kpuk



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    ynbIpb
    Вот оно!
    главное для меня в твоём примере $STDOUT_CHILD и StdoutRead($hCMD)
    а для хр я чутка по другому делаю, не знаю прально или нет, но работет хорошо
     

    Код:
    $file = лог с ipconfig
    $i = 1
    $spl = ""
        While 1
            $line = FileReadLine($file, $i)
            If @error = -1 Then ExitLoop
            $line = StringSplit($line, " - ", 1)
            If $line[0] = 2 Then $spl = $spl & $line[1] & @crlf
            $i += 1
        WEnd
    msgbox(0,"",$spl)


    ----------
    Мой дед говорил ''делай добро и бросай его в воду,
    Оно не пропадёт, добром к тебе вернётся...''

    Дружественный хостинг. Мой выбор!

    Всего записей: 1099 | Зарегистр. 07-03-2004 | Отправлено: 16:49 11-11-2010
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Возможно ли получить id кнопки в html-страничке при клике по этой кнопке правой кнопкой мыши, не используя для этого js-скрипты, т.е. средствами самого АвтоИТ?

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 16:21 12-11-2010
    Zloy_Gelud



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Какие WM команды срабатывают, когда изменяют размеры ГУИ и/или его разворачивают на весь экран.

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 15:13 13-11-2010
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Zloy_Gelud
    К примеру WM_WINDOWPOSCHANGED или можно скомбинировать из двух. Я же выкладывал архив с WM, пробуй.
    Я не могу найти как WM_COPY использовать, на офсайте ничего нет. Функция по смыслу должна срабатывать во время отправки в буфер.

    Всего записей: 4411 | Зарегистр. 03-05-2006 | Отправлено: 00:18 14-11-2010 | Исправлено: AZJIO, 00:23 14-11-2010
    Zloy_Gelud



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

    Всего записей: 3266 | Зарегистр. 30-05-2007 | Отправлено: 12:41 14-11-2010 | Исправлено: Zloy_Gelud, 13:00 14-11-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 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