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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 4)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Открыть новую тему     Написать ответ в эту тему

gyra

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

 
Описание:

Цитата:
AutoIt v3 - это язык для написания сценариев, напоминающий BASIC. Основным его назначением является автоматизация работ с Windows GUI (графическим интерфейсом пользователя MS Windows). Для выполнения этой сложной задачи предоставляется комбинация испытанных методов, включающих в себя эмуляцию нажатий комбинаций клавиш клавиатуры, перемещения указателя мыши, управление окнами и их визуальными элементами. Как показывает практика, эти "приводные ремни" весьма эффективны для получения работающих решений в ситуациях, когда другие стандартные средства (например, VBScript и SendKeys) оказываются бессильны.
Умеет он очень и очень многое! Бесплатный.

 
  • Справки
  • Инструменты
  • Ресурсы, посвящённые AutoIt
  • Полезные советы новичкам и не только
  • Готовые решения
  • Версии для устаревших Windows
  • Скрипт раскраски кода AutoIt для публикации в форумах
     


     
    За шапкой следит ViSiToR / AZJIO  

  • Всего записей: 7932 | Зарегистр. 18-02-2006 | Отправлено: 10:49 23-01-2020 | Исправлено: Egor2020, 14:02 22-03-2021
    NIKZZZZ



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

    Цитата:
    пробовал. Не работало.  

    Может IniRead кавычки обрезает, тогда так

    Код:
    StartDIR="'1234545\'"  

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:30 12-03-2020
    gryu



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

    Цитата:
    Может IniRead кавычки обрезает, тогда так  
    Где то точно отрекаются.  
    В изначальном config.ini  
    StartDIR=""
    StartDIR=    
    при таком присвоении переменной равны. А вот где отрезается, это я не понял.  
    Толи при присвоении, толи при подстановке в  
    Run(&StartDIR ......)
    FileWriteLine(file,  &StartDIR .......)

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 16:35 12-03-2020 | Исправлено: gryu, 16:42 12-03-2020
    NIKZZZZ



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

    Цитата:
    А вот где отрезается, это я не понял.  

    Так вставьте MsgBox(4096,'StartDIR',$StartDir) в нужное место и посмотрите.

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:44 12-03-2020
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gryu
    IniRead() автоматически съедает кавычки и пробельные символы в начале/конце значения ключа.
    Этот факт надо учитывать в процессе написания скрипта.

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 16:53 12-03-2020
    gryu



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    iglezz
    Угу. Я догадывался.  
    Жаль что описашки функций в инете ущербны.  
    Краткое описание, порой из которого приходится истину добывать методом научно тыка.  
    Я про https://autoit-script.ru/docs/
    Этим ресурсом пользуюсь.  
     
    У меня же "проблема не простая" во взаимодействии с этим скриптовым языком.  
    Простые скрипты я на шел пишу. И для этого мне autoit не нужен.  
    А когда шел либо не может, либо обрастает кучей допов, обращаюсь к сабжу.  
    VBS что то не пришёлся по душе... Ява вообще бесит вечными обновлениями/дырами/блокировками.  
    Специально autoit не изучал. Так, наблатыкался поверхам......  

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 21:02 12-03-2020 | Исправлено: gryu, 21:08 12-03-2020
    iglezz

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

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 21:08 12-03-2020
    gryu



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    NIKZZZZ
    iglezz
    Возвращаясь к вопросу о  

    Код:
     $StartDIR = IniRead("config.ini","Start","startDIR","default")
    Opt('ExpandEnvStrings',1)
    $StartDIR = $StartDIR  

    Не работает путь с пробелами типа c:\temp\prog folder\folder
    При кирилице в пути, получаем абракадабру.  
    Вместо  
    c:\temp\тест
    получаем
    c:\temp\тест
     
    (да и вообще я заметил путаницу в кодировках... повидимому просто это где то указать надо.)
    Оно в принципе редко надо. Но ....

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 13:28 13-03-2020 | Исправлено: gryu, 13:29 13-03-2020
    iglezz

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

    Цитата:
    Не работает путь с пробелами типа c:\temp\prog folder\folder  

    Где не работает, пример?

    Цитата:
    При кирилице в пути, получаем абракадабру.    

    Кодировка ini должна быть  ANSI / UTF-16 LE BOM
     
    Если очень хочется utf-8, то можно сделать FileOpen() в нужной кодировке и вычитать параметры вручную (или с помощью IniVirtual (не проверял))

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 13:56 13-03-2020 | Исправлено: iglezz, 19:41 14-03-2020
    gryu



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

    Цитата:
    Где не работает, пример?  
    мда. действительно работает... сори.  
     
     
    Добавлено:
    iglezz
    Код:
     FileOpen ( "filename" [, mode = 0 ] )
    ...
    mode  
    ..
    8 = Создать структуру папок, если путь к файлу не существует (см. примечания).
    16 = Принудительно использовать бинарный режим (см. примечания).
    32 = Использовать кодировку Unicode UTF16 Little Endian для чтения и записи. Чтение не перезаписывает существующую BOM.
    ....
     

    Таким образом:
    если пути нет, то 8  
    Если нужно в UTF, то 32. (один из...)
    А если и пути нет и UTF? Или нужно выбирать что то одно, а другие опции реализовывать подругому, к примеру :
    Код:
     
    DirCreate (DIR)
    FileOpen(DIR\File, 32)  

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 14:34 13-03-2020 | Исправлено: gryu, 14:56 13-03-2020
    Fom64

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gryu
    FileOpen ( "filename" , 8+32)

    Всего записей: 262 | Зарегистр. 26-11-2010 | Отправлено: 15:26 13-03-2020
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gryu
    Стрелять себе в ногу -- занятие сомнительное :) Путь лучше использовать полный.
     
    $FO_CREATEPATH (8) относится к открытию файла на запись, а для открытия на чтение этот флаг и смысла не имеет.

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 15:37 13-03-2020 | Исправлено: iglezz, 15:39 13-03-2020
    gryu



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

    Цитата:
    Стрелять себе в ногу -- занятие сомнительное Путь лучше использовать полный.
     
    $FO_CREATEPATH (8) относится к открытию файла на запись, а для открытия на чтение этот флаг и смысла не имеет.
    Про стрельбу принципиально согласен.  
    Но не понял вы о чём в данном случае?  

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 16:04 13-03-2020
    NIKZZZZ



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

    Цитата:
    Кодировка ini должна быть  ANSI
    Если очень хочется utf, то можно сделать FileOpen() в нужной кодировке и вычитать параметры вручную (или с помощью IniVirtual (не проверял))

    Если кодировка в UTF8 с BOM, то обязательно нужно в ini файле в начало ini файла добавлять пустую строку, иначе  BOM заголовок будет воспринят как символы, больше проблем не видел.
     

    Всего записей: 5365 | Зарегистр. 08-02-2006 | Отправлено: 16:08 13-03-2020 | Исправлено: NIKZZZZ, 16:19 13-03-2020
    Fom64

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gryu
    Какой программой у тебя генерится ini-файл? Собсно, откуда там кирилица, тем более во временной папке?

    Всего записей: 262 | Зарегистр. 26-11-2010 | Отправлено: 17:53 13-03-2020
    gryu



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fom64
    Первичный ini правится руками. Пока. Потом будет видно чем.  
    Конфигурационный, стартовый файл ПО собирается скриптом autoit через IniRead() -> FileWriteLine() вычитывая первичный ini. И может соответственно находится в любой папке.  
    Стартовая директория создаётся в системной %temp%. (типа по умолчанию)
    А в этой переменной как известно кириллица легко может быть.  
    Плюс запуск может быть из другой папки профиля. Там нюанс есть..

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 21:02 13-03-2020 | Исправлено: gryu, 21:24 13-03-2020
    Fom64

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gryu
    Рандомное и уникальное (так правильно) имя "стартовой" папки генерится скриптом(программой) и записывается в ини, папка создается в %temp%'е, другой скрипт считывает имя папки из ини и чота делает, так?
    Тогда зачем огород городить с записью в ини полного пути? Проще записать только имя папки, тогда $StartDIR = @TempDir & "\" & IniRead(<путь к ини файлу иль макрос> & "\config.ini","Start","startDIR","default"). И пофиг на кирилицу в пути. Сам ини файл желательно переименовать, какойнидь уникальное имя (config.ini в винде, как грязи), положить (прописать путь создания) в любой папке определяемой макросом autoit, опять жеж пофиг на кирилицу в пути.

    Всего записей: 262 | Зарегистр. 26-11-2010 | Отправлено: 21:37 13-03-2020 | Исправлено: Fom64, 21:40 13-03-2020
    gryu



    дикий гусь
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fom64
    В программировании (любом) вообще нет единственно верных путей.  
    Все и всегда можно реализовывать по разному.  
    Я иду по "такому" пути. Путь почти пройден. Фактически нужное уже добился.  
    Там комбайн с кучей функций и (тот кусок что сейчас бьюсь) генерацией конфига запуска в зависимости от нескольких вариаций железа.  
    Переписывать  заново .... ну его нафик......  
    А разница получается по сути в паре строк в описании ПО. ... Либо "в пути не должно быть спецсимволов и букв не английского алфавита", либо этой строки можно не писать....
    Скрипт потом будет скомпилирован в exe-шник и будет поставляться с "инишником". Который по сути и нужен "на авдрух?!" Чтоб не exe-шник переделывать, а по удалёнке в инишник залезть и изменить параметры..  
    А сменить кодировку в изначальном ini проблем нет.  
    По поводу имени этого файла, так сейчас отладка идёт. В скрипте у меня вообще нет имени файла вычетки. Переменная стоит. Что подставлю, то и будет..  

    Код:
    ...
    $Exe = IniRead($sConfig,"Start","File","default")
    $Mode = IniRead($sConfig,"Start","Mode","default")
    $Opt1 = IniRead($sConfig,"Start","Test","default")
    $Opt2 = IniRead($sConfig,"Start","UAC","default")
    $Opt3 = IniRead($sConfig,"Start","AMD","default")
    $Opt4 = IniRead($sConfig,"Start","NVIDIA","default")
    $Opt5 = IniRead($sConfig,"Start","CPU","default")
    $cFile = IniRead($sConfig,"Start","FileConfig","default")
    ...

     
    Добавлено:
    P.S.
    Вот ещё в перспективе думаю докопаться до "default" в этом деле. Т.е. до подстановки в случае отсутствия.
    Но это потом.  .. потому как что то я недопонял зависимость.  
    Оне "default" выдаёт при отсутствии параметра, а не отсутствии  ключа. А мне при отсутствии ключа надо. Чтоб "обнуление" прописывать в "лишних" в данной конфигурации параметрах не надо было.  (стандартную развилку "если - то" сделать хочу, но потом ... наверно ... может быть)
     
    Добавлено:

    Цитата:
    Рандомное и уникальное (так правильно) имя "стартовой" папки генерится скриптом(программой) и записывается в ини,
    нет.  
    "зависимое" и уникальное имя стартовой папки генерится скриптом, туда помещаются нужные файлы и запускается ПО.  
    Это не инсталлятор. Это запускашка.  А научникам нашим шаловливо-рукастым нехрен лишнего давать.  
    я вообше это дело в RAM-диск поместить хочу. Чтоб вообще на диске ничего не было.  И нахрен закрыть доступ к нему "пользователю".
    В генерации RAM-диска проблемы нет. Это просто следующая ступень.  
     
     
    Добавлено:
    To All
    Никто не заморачивался склейкой/пачингом исполняемых файлов/библиотек в сабже?
    Суть.  
    Скомпилированный ехе-шник содержит некий кусок кода в виде файла. Болванку.  
    В зависимости от конфига, этот скрипт ехе-шник распаковав данную болванку берёт нужный блок и пачит болванку до нужного состава кода соответственно библиотеки/исполняемого файла.  

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 23:21 13-03-2020 | Исправлено: gryu, 00:18 14-03-2020
    Fom64

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

    Цитата:
    Оне "default" выдаёт при отсутствии параметра, а не отсутствии  ключа

    Справку читай) Функция IniRead возвращает string при любой ошибке. "Default" - это не параметр, а возвращаемая строка.

    Цитата:
    А научникам нашим шаловливо-рукастым нехрен лишнего давать.  
    я вообше это дело в RAM-диск поместить хочу. Чтоб вообще на диске ничего не было.  И нахрен закрыть доступ к нему "пользователю".
    В генерации RAM-диска проблемы нет. Это просто следующая ступень.  
     

    Ты чота по индусскому пути идешь, без обид;) Есть функция BlockInput(flag) блокирующая клаву и мышь.

    Всего записей: 262 | Зарегистр. 26-11-2010 | Отправлено: 09:07 14-03-2020 | Исправлено: Fom64, 09:17 14-03-2020
    iglezz

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    gryu
    IniRead/IniWrite, кстати, по результатам проверки, может и в кодировку UTF-16 LE BOM кроме ANSI
     
    NIKZZZZ

    Цитата:
    Если кодировка в UTF8 с BOM, то обязательно нужно в ini файле в начало ini файла добавлять пустую строку, иначе  BOM заголовок будет воспринят как символы, больше проблем не видел.  

    Для какого случая?
     

    Всего записей: 1521 | Зарегистр. 18-02-2003 | Отправлено: 19:40 14-03-2020
    gryu



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

    Цитата:
    Ты чота по индусскому пути идешь, без обид;) Есть функция BlockInput(flag) блокирующая клаву и мышь.  
    Оно в фоне работать должно.
    Цитата:
     "Default" - это не параметр, а возвращаемая строка.  
    я знаю. Я и не писал что  "Default" это ПАРАМЕТР.  
    Я писал что это то что возвращается. Без уточнений.
    И возвращает это в случае отсутствии  строки(параметра), а не ключа в строке(значения параметра).  
       
     
     
    Добавлено:
    P.S.
    Индусские ( ну .. индийские и всякие другие шриланки, ...) программисты сейчас считаются одними из лучших.  

    Всего записей: 13033 | Зарегистр. 15-03-2006 | Отправлено: 21:30 14-03-2020 | Исправлено: gryu, 21:42 14-03-2020
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14

    Компьютерный форум Ru.Board » Компьютеры » Программы » AutoIT (Часть 4)


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru