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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BOBAT
    Не понимаю что не работает, но для того чтобы файл попал в скомпилированный exe нужно указать полный путь, то есть не FileInstall("Single_start.xml", а FileInstall("C:\Single_start.xml"
    2. FileChangeDir, но это когда скрипт запускается через батник, он не увидит своей папки, если в ней есть файлы.
    3. Чтобы засунуть текст батника и xml без FileInstall, легче всего воспользоваться моей сборкой Notepad++ и командой txt2au3, перед этим открыть текст в Notepad++, выделить весь, скопировать в буфер и вызвать Alt+Shift+A или команду "Запуск -> txt2au3", в буфере будет результат, который можно протестировать в отдельном скрипте и заменить на сохранение в файл.
     
    Только может быть проблема, что я не делал доводку скриптов под новую версию, а на 3.3.8.1 сработает.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 12:58 11-09-2018 | Исправлено: AZJIO, 13:00 11-09-2018
    BOBAT



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

    Цитата:
    но для того чтобы файл попал в скомпилированный exe нужно указать полный путь

    Если файл лежит рядом со скриптом, полный путь указывать не нужно, пример из справки
    Код:
    FileInstall("test.gif", @TempDir & '\test.gif') ; Если скрипт не скомпилирован, то файл будет скопирован в казанный каталог
     
    и так всё попадает, и файл xml  у меня тоже попадает в скомпилированный скрипт, и извлекается он тоже в TempDir, вот только почему то не срабатывает. Да неважно, не хочу разбираться, выйду из положения другими средствами.

    Всего записей: 1511 | Зарегистр. 07-08-2005 | Отправлено: 18:54 11-09-2018 | Исправлено: BOBAT, 18:56 11-09-2018
    Smitis



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

    Цитата:
    и так всё попадает, и файл xml  у меня тоже попадает в скомпилированный скрипт, и извлекается он тоже в TempDir, вот только почему то не срабатывает.

    Я не знаю, что у Вас в файле xml и что делает sh.cmd. Но вот сейчас попробовал Ваш первый вариант, sh просто выводит содержимое в консоль type "%~dp0Single_start.xml" и всё срабатывает, откуда бы скомпилированный скрипт не запускался. Видимо, что-то не так в Вашем sh.cmd


    ----------
    Разум когда-нибудь победит

    Всего записей: 3214 | Зарегистр. 09-02-2003 | Отправлено: 00:11 12-09-2018
    AZJIO



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

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 01:17 12-09-2018
    AlexandrPessimist



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте. Возникла проблема с передачей символа NUL. Что нужно:
    1. Открыть образ (*.img) в HEX режиме.
    2. Прочесть (из разных мест в файле) и сохранить нужное число байт в INI-файл (как значения параметров).
    3. Распаковать образ.
    4. Создать образ из содержимого папки, используя в командной строке значения из INI-файла.
    Проблема в 4 шаге:
    Имя образа (сохр. в ini) всегда фикс. длины, начинается всегда текстом, а в конце заполняется символом NUL до нужной длины. При сохранении имени в INI, символ NUL не передается, соответственно длина имени образа сокращается. Для создания образа нужно передать в командную строку фиксир. длины имя, содержащее символы NUL. Пример ($name):

    Код:
    Run(@ScriptDir & '\mkimage.exe -A ' & $cmd1 & ' -O ' & $cmd2 & ' -T ' & $cmd3 & ' -C ' & $cmd4 & ' -a ' & $cmd5 & ' -e ' & $cmd6 & ' -d kernel/zImage:initrd.cpio.gz -n ' & $name & ' new.img', $in_dir & '\', @SW_HIDE)

    За основу пытался брать реализацию создания образа через BAT-файл:

    Код:
    for /f %%a in ('cat image_name.txt') do ( set name=%%a )

    Переменная %name% используется для вставки в параметры создания образа, как имя образа. В консольном варианте имя файла сохранялось не как значение в INI, а как отдельный файл (просто сливался кусок в HEX режиме). Далее, при создании образа, для получения точного имени используется утилита CAT (win32), результат которой исп. как точное имя образа.
    Как это можно реализовать в autoit, никак не пойму. Пробовал исп. CAT для чтения имени (в отдельном файле), но она ничего не возвращает (запускал с пар. $STDOUT_CHILD)...
    Можно ли как-то передать string строку, которая содержит только текст и символы NUL? Можно даже с помощью CAT..

    Всего записей: 21 | Зарегистр. 19-02-2016 | Отправлено: 19:02 13-09-2018
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlexandrPessimist
    В чём невозможность? Невозможность в $name добавить NUL или невозможность выполнить Run в строке параметров которой есть символ NUL? Вставить NUL в строку можно например бинарные данные преобразовать в строку. Все функции будут работать со строкой с 00, кроме вывода в мессаге и в регулярном выражении. В месаге обрежется текст по 00, а рег. выр. не отработает.
    INI-файл текстовый и вроде не поддерживает бинарные данные, если только записать бинарные данные как строку типа 003495F0 и т.д., а потом прочитав преобразовать в строку. Если я хоть что-то понял.

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 22:06 13-09-2018
    AlexandrPessimist



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AZJIO
    Возможно я что-то не так объяснил, постараюсь точнее:
    1. Я открыл *.img как FileOpen($in_file, 16)
    2. Сохранил в INI нужные куски байт (обрезав впереди "0x")
    3. Читаю значения из INI и подставляю их в строку запуска для создания образа. Проблема заключается в значении, оно должно быть фиксированной длины (32 байта), в виде обычного текста. При конвертировании значения в текст, 00(NUL) обрезаются, значение становится короче 32 байт.
     
    Upd.: Вопрос решен - Достаточно сохранить в INI имя образа, функцией: IniWrite($img_ini, 'Uboot', 'Label', BinaryToString(FileRead($in_file, 32), 4)). При создании образа, утилита сама допишет нули до нужной длины. Вспомнил про "Бритву Оккамы"...

    Всего записей: 21 | Зарегистр. 19-02-2016 | Отправлено: 22:32 13-09-2018 | Исправлено: AlexandrPessimist, 02:51 14-09-2018
    Fom64

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

    Код:
    #include <String.au3>
    $name = StringReplace (_HexToString ($Img_Name), Chr (0),"NUL")

    AZJIO  
    В его случае _HexToString все что не равно 0 - преобразует, а остальное забивает нулями, то есть не обрезает по значащим символам. Получается не чистый String, а еще + бинарный довесок из Chr(0).

    Всего записей: 262 | Зарегистр. 26-11-2010 | Отправлено: 07:30 14-09-2018 | Исправлено: Fom64, 12:57 14-09-2018
    Alex22T

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прога DeskSoft WindowManager 6.1.2 (сохраняет положение и размер открытых окон).
    Каждый раз, после запуска, ее приходится сворачивать вручную (Ok или Escape), что, естественно, слегка напрягает. Хочется, чтобы она запускалась в свернутом виде или сворачивалась сразу после запуска. Стандартными средствами и при помощи vbs проблему решить не удалось.
    На AutoIt сделал так:
    Код:
    Run('C:\PROGRA~2\Z_2_NO~1\DESKSO~1.2EN\WINDOW~1.EXE', '', @SW_MINIMIZE)
    Sleep(300)
    Send("{Enter}")

    Работает, но при запуске скрипта открывается три копии программы. Если их закрыть и запустить  
    скрипт снова - отрабатывает нормально.
    Менял значение параметра Sleep - безрезультатно.
    Помогите, плиз!

    Всего записей: 379 | Зарегистр. 23-04-2004 | Отправлено: 12:51 17-09-2018 | Исправлено: Alex22T, 12:53 17-09-2018
    Fom64

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alex22T
    Пропиши в самой программе
    Цитата:
    DeskSoft WindowManager
    чтоб она себя сворачивала, ну иль запускалась свернутой. Наверняка такая возможность есть иль существуют пар-тры ком.строки

    Всего записей: 262 | Зарегистр. 26-11-2010 | Отправлено: 14:34 17-09-2018
    Alex22T

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fom64
    Цитата:
    Пропиши в самой программе DeskSoft WindowManager  
    чтоб она себя сворачивала, ну иль запускалась свернутой. Наверняка такая возможность есть иль существуют пар-тры ком.строки

    Alex22T
    Цитата:
    Стандартными средствами и при помощи vbs проблему решить не удалось.  

    Всего записей: 379 | Зарегистр. 23-04-2004 | Отправлено: 15:09 17-09-2018 | Исправлено: Alex22T, 15:10 17-09-2018
    Fom64

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

    Цитата:
    WindowManager supports the following command line parameters:
    WindowManager.exe -MINIMIZE
    This command starts WindowManager minimized.

    Всего записей: 262 | Зарегистр. 26-11-2010 | Отправлено: 15:15 17-09-2018
    Alex22T

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fom64
    Цитата:
    WindowManager.exe -MINIMIZE

    Yes!!!  
    Огромное спасибо!  
    А сколько было танцев, бубен еле выдержал...

    Всего записей: 379 | Зарегистр. 23-04-2004 | Отправлено: 15:31 17-09-2018
    Retro222

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет.
     
    У меня 32-х битная система.
    Но почему-то DWORD-параметр, который в реестре отображается, как 32 бита
    возвращает 64-х битное число, с типом Int64.
     
    Почему так?
    Почему он не возвращает Int или long?
     

    Код:
     
    Local $a = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.css", "BrowserFlags"), $b = @extended, $c = Hex($a, Default)
    MsgBox(0, $b, $a & @CR & $c & @CR & @CR & VarGetType($a) & @CR & @CR & VarGetType($c) & @CR)
     

    Всего записей: 260 | Зарегистр. 21-09-2018 | Отправлено: 09:21 21-09-2018
    Retro222

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Привет.
     
    Чё-то у меня не получается вернуть символ.
    Как вернуть "t"?
     

    Код:
     
    Local $u = 74 ; t
    ; MsgBox(0, $u & "    " & VarGetType($u), Asc($u) & @CR & AscW($u) & @CR & Chr($u) & @CR & ChrW($u))
    ; MsgBox(0,  $u & "    " & VarGetType($u), BinaryToString($u) & @CR & StringToBinary($u, 1) & @CR & Hex($u) & @CR & Binary($u))
    MsgBox(0,  $u & "    " & VarGetType($u), Chr(Hex($u, 2)))

     
     

    Всего записей: 260 | Зарегистр. 21-09-2018 | Отправлено: 11:57 23-09-2018
    Fom64

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Retro222
    Chr("0x"&$u)

    Всего записей: 262 | Зарегистр. 26-11-2010 | Отправлено: 12:13 23-09-2018
    Retro222

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

    Всего записей: 260 | Зарегистр. 21-09-2018 | Отправлено: 12:25 23-09-2018
    AZJIO



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Retro222
    откуда 74 берётся? Нельзя 10-ричную систему использовать? Или брать шестнадцатеричный символ? Почему надо взять шестнадцатеричный символ в десятеричной системе?

    Всего записей: 4409 | Зарегистр. 03-05-2006 | Отправлено: 10:36 24-09-2018
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто-нибудь знает, что с конференцией на jabber.ru? Как ни загляну - никого...

    Всего записей: 6473 | Зарегистр. 28-01-2008 | Отправлено: 12:38 24-09-2018
    Sauron_zombie



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Совершенно не знаю ничего про сабж, но хотелось бы такое - есть прога, которая в автозапуске, пароль не умеет запоминать, можно ли как-то передать ей этот пароль и нажать Enter?

    Всего записей: 536 | Зарегистр. 31-01-2006 | Отправлено: 17:14 24-09-2018
       

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