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

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

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

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

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

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
    BOBAT



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, на вкладке браузера в полях ввода провожу команды Send("^a")
    Send("^c") Send("^v") Send("^w") и иногда все работает, потом меняю что то в коде (незначительное) и клавиши перестают нажиматься - вместо команды  Send("^a") просто вводит a, вместо команды  Send("^v") просто вводит v и тд., как заставить сочетания работать? Необходимо в одном поле выделить и скопировать число, потом вставить его в другое поле
     
    P.S. Оказалось дело в раскладке, на русской раскладке клавиши ^a не работают, КАК сделать так, чтобы все работало независимо от раскладки??

    Всего записей: 1532 | Зарегистр. 07-08-2005 | Отправлено: 11:53 13-05-2024 | Исправлено: BOBAT, 12:52 13-05-2024
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BOBAT
    На русском форуме не смотрели? Там это обсуждалось и, возможно, где-то на видном месте в FAQ или в закреплённых темах висит.
     
    В крайнем случае можно по-простому: с помощью _WinAPI_GetKeyboardLayout получить значение раскладки вашего окна, если не равно дефолтной английской (0x0409), то сменить на неё с помощью _WinAPI_SetKeyboardLayout, а после ею же вернуть как было.

    Всего записей: 6713 | Зарегистр. 28-01-2008 | Отправлено: 21:47 13-05-2024
    BOBAT



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

    Цитата:
    P.S. Оказалось дело в раскладке, на русской раскладке клавиши ^a не работают, КАК сделать так, чтобы все работало независимо от раскладки??
     

    Нашёл простое решение: ВМЕСТО Send("^c") и Send("^v") ИСПОЛЬЗУЕМ  Send("^{INSERT}");копируем и Send("+{INSERT}");вставляем, работает НЕЗАВИСИМО от раскладки

    Всего записей: 1532 | Зарегистр. 07-08-2005 | Отправлено: 11:25 15-05-2024
    BOBAT



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Можете подсказать, в папке картинки jpg, с $pic = Random(1, 500, 1) получаю случайный номер картинки ($pic), как теперь из этой же папки скопировать картинку с этим номером ($pic) на уровень вверх или в любое другое место?
    РЕШЕНО: "&$pic&".jpg

    Всего записей: 1532 | Зарегистр. 07-08-2005 | Отправлено: 13:45 16-05-2024 | Исправлено: BOBAT, 15:36 17-05-2024
    BOBAT



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Код сгенерировал ИИ, но он не работал, я его немного переделал, всё равно не работает, что нужно изменить?

    Цитата:
     
    ; Считываем картинку wallpaperGrop.png, размер 12х12 из текущего каталога
    Local $image = "wallpaperGrop.png"
     
    ; Определяем цвет пикселя в центре картинки
    Local $color = PixelGetColor(6, 6, $image)
     
    ; Проверяем яркость цвета (если значение больше 0x808080 то цвет темный, иначе светлый)
    If $color > 0x808080 Then
        ; Тёмный цвет - выполняем определенное действие
        MsgBox(0, "Сообщение", "Темный цвет обнаружен!")
    Else
        ; Светлый цвет - выполняем другое действие
        MsgBox(0, "Сообщение", "Светлый цвет обнаружен!")
    EndIf
     

    Или как сделать так, чтобы считывалась картинка 12х12, и весь квадрат проверялся и определялся диапазон цвета или яркости, если светлый (ближе к белому), то одно действие, если тёмный - другое

    Всего записей: 1532 | Зарегистр. 07-08-2005 | Отправлено: 13:38 19-05-2024 | Исправлено: BOBAT, 13:39 19-05-2024
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    BOBAT
    Возможно, неверно сформулировали вопрос? PixelGetColor работает с окном.
    Посмотрите такой вариант.

    Всего записей: 6713 | Зарегистр. 28-01-2008 | Отправлено: 15:23 19-05-2024
    BOBAT



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

    Цитата:
    возможно, неверно сформулировали вопрос? PixelGetColor работает с окном.
    Посмотрите такой вариант.
    выдает
    Bitmap Pixel Color at [12, 12] is: 0x000000
    на почти белой картинке, а должен определять 0xF8F8F8, Тот код, написанный ИИ - все таки логически правильный, нужно его подправить, чтобы правильно определял яркость картинки и потом сравнивал цветом 0x808080 - это серый, а код на ЛЮБОЙ цвет, даже Чёрный выдаёт "Светлый цвет обнаружен!"
    Или как сделать так, чтобы считывалась картинка 12х12, и весь квадрат проверялся и определялся диапазон цвета или яркости, если светлый (ближе к белому), то одно действие, если тёмный - другое
     

    Всего записей: 1532 | Зарегистр. 07-08-2005 | Отправлено: 17:24 19-05-2024 | Исправлено: BOBAT, 17:38 19-05-2024
    Skif_off

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

    Цитата:
    а должен определять 0xF8F8F8

    Может, с альфа каналом как-то связано? А если предварительно сконвертировать в BMP?

    Цитата:
    Тот код, написанный ИИ - все таки логически правильный

    Безусловно правильный, только делает он не то, что вам надо: функция PixelGetColor работает с активным окном или с указанным окном, а вам нужно прочитать содержимое файла и смотреть в нём.
    Откройте ваш файл в какой-нибудь программе просмотра, переключите режим

    Код:
    Opt("MouseCoordMode", 2)

    и с помощью MouseGetPos получите координаты, тогда этот логически правильный код покажет цвет нужного пикселя.
     
    На оффоруме предлагают попробовать _GDIPlus_BitmapCreateFromFile() + _GDIPlus_BitmapGetPixel() (смотрел в приватном режиме и в истории не сохранился адрес, но там всё равно примера не было).

    Всего записей: 6713 | Зарегистр. 28-01-2008 | Отправлено: 18:10 19-05-2024
    BOBAT



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

    Цитата:
    А если предварительно сконвертировать в BMP?

    Поведение изменилось, теперь у него ЛЮБОЙ квадрат Тёмный (на png любой квадрат был Светлый)

    Всего записей: 1532 | Зарегистр. 07-08-2005 | Отправлено: 18:23 19-05-2024
    BOBAT



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

    Код:
     
    ; выделяем данные на странице размером в Одну строку
    Sleep(1088)
    Send("^{INSERT}") ; копируем данные
    $dand = ClipGet()
    FileWrite(@DesktopDir & "\записываем.txt",($dand)&@CRLF)
    Sleep(1088)
    ; и так несколько (может быть 20) раз
     

    Скопированные данные вставляются в две строки, проблема в том, что часть скопированных данных не записывается, то есть в txt файле пустая строка, что изменить, чтобы все файлы записывало? И можно ли сделать так, чтобы после записи стиралась ВТОРАЯ строка (данные с сайта о том, что текст скопирован с данного ресурса)

    Всего записей: 1532 | Зарегистр. 07-08-2005 | Отправлено: 08:35 20-05-2024
    MisterMyth

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

    Всего записей: 1068 | Зарегистр. 03-01-2015 | Отправлено: 13:54 24-06-2024
    BOBAT



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

    Код:
     
    $aRet = _GenerateRandomNumbers(8, 100, 1)
    _ArrayDisplay($aRet)
     

    Выводится $aRet в виде массива, каким образом можно $aRet сначала отсортировать от меньшего к большему, потом преобразовать в строку с запятыми и записать в файл??

    Всего записей: 1532 | Зарегистр. 07-08-2005 | Отправлено: 19:02 01-07-2024
    king_stiven

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

    Всего записей: 2237 | Зарегистр. 17-07-2006 | Отправлено: 22:29 01-08-2024 | Исправлено: king_stiven, 22:29 01-08-2024
    BOBAT



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

    Цитата:
    Может
    _ArraySort
    потом
    _ArrayToString

    Спасибо, сам уже допёр до всего этого

    Всего записей: 1532 | Зарегистр. 07-08-2005 | Отправлено: 13:43 04-08-2024
    Vidockq

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

    Всего записей: 222 | Зарегистр. 14-01-2016 | Отправлено: 12:05 17-09-2024
    DeZz



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

    Всего записей: 1366 | Зарегистр. 23-01-2006 | Отправлено: 16:10 30-09-2024 | Исправлено: DeZz, 16:10 30-09-2024
    AkulaBig

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как передать имя файла под курсором в скрипт?
    ;Open
    $Open_Result=DllCall($DLL, "int", "MediaInfo_Open", "ptr", $Handle[0], "wstr", "Example.ogg")
    Так работает, но надо чтобы имя файла в качестве параметра передавалось.  $CmdLine[1] срабатывает, если запускать AutoIt3.exe MediaInfo.au3 bestcity.mp3.
    Но мне надо передать имя файла под курсором.

    Всего записей: 6482 | Зарегистр. 11-03-2003 | Отправлено: 21:27 28-10-2024 | Исправлено: AkulaBig, 22:12 28-10-2024
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AkulaBig
    Забрать файл под курсором где? В Проводнике Windows?
    Вы же вроде ТС пользуетесь? Кнопка с AutoIt3.exe и %P%N, можно жать на неё или просто бросить файл...

    Всего записей: 6713 | Зарегистр. 28-01-2008 | Отправлено: 23:47 28-10-2024
    AkulaBig

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    В ТС. Но кнопка не пойдет. Хочу скрипт для плагина WinScriptsAdv.wdx использовать. Для пользовательских колонок. Почему-то $CmdLine[1] тогда не работает.

    Всего записей: 6482 | Зарегистр. 11-03-2003 | Отправлено: 05:29 29-10-2024 | Исправлено: AkulaBig, 05:30 29-10-2024
    Skif_off

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AkulaBig
    Ну вы, блин, даёте © ) Это же совсем другое дело.

    Цитата:
    Почему-то $CmdLine[1] тогда не работает.

    Так понял, такое и не задумывалось. В скрипте используйте переменную $filename, в неё плагин передаёт полное имя файла, а перед завершением скрипта присвойте возвращаемое значение переменной $content. Если скрипт возвращает более одного знаяения, то по порядку $content, $content1, $content2 и т.д.
    С плагом вроде и пример на AutoIt идёт.
     
    Есть смысл заглянуть в эту тему и в первом сообщении есть ссылка на аналогичную тему на оффоруме (я бы начал со второй).
     
    P.S. Показалось, что финт с запуском скрипта AutoIt из скрипта VBScript работал немного шустрее. Но специально не замерял.
     
    P.P.S. А что не так с TCMediaInfo? Он нехило так расширяем и за счёт кэширования можно выигрыш получить.

    Всего записей: 6713 | Зарегистр. 28-01-2008 | Отправлено: 06:37 29-10-2024 | Исправлено: Skif_off, 06:37 29-10-2024
    Открыть новую тему     Написать ответ в эту тему

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

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


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru