Запуск скрипта AutoHotPY

Vladimir_30

Новичок
Пользователь
Ноя 15, 2023
4
0
1
Всем привет.
Есть пакет AutoHotPY (https://github.com/dc740/AutoHotPy) - набор функций для создания макросов движения мышки и нажатий на клавиатуру, которые выполняются через специальный драйвер Interception. На GitHUBе есть примеры по его использованию. Запись макроса, его воспроизведение по горячей кнопке. Тут все понятно и это все работает. Вопрос - как запустить макрос не по горячей кнопке при запущенном скрипте, а сразу при запуске скрипта *.py?
Содержимое записанного скрипта:

Python:
from AutoHotPy import AutoHotPy
from InterceptionWrapper import *
def exitAutoHotKey(autohotpy,event):
    autohotpy.stop()
def recorded_macro(autohotpy, event):
    autohotpy.moveMouseToPosition(1153,562)
    autohotpy.sleep(0)
    autohotpy.N1.down()
    autohotpy.sleep(0.07201743125915527)
    autohotpy.N1.up()
    autohotpy.sleep(0.23990106582641602)
    autohotpy.N2.down()
    autohotpy.sleep(0.11211419105529785)
    autohotpy.N2.up()
    autohotpy.sleep(0.15170598030090332)
    autohotpy.N3.down()
    autohotpy.sleep(0.1445457935333252)
    autohotpy.N3.up()
if __name__=="__main__":
    auto = AutoHotPy()
    auto.registerExit(auto.ESC,exitAutoHotKey)
    auto.registerForKeyDown(auto.F1,recorded_macro)
    auto.start()
 

Vladimir_30

Новичок
Пользователь
Ноя 15, 2023
4
0
1
Отвечу сам себе) Поковырявшись в функц.модулях увидел, что без движения мышки или нажатия на кнопку ничего в принципе не запустится. Там просто стоит WAIT на ответ от устройства. Надо писать свои процедуры, которые будут обращаться к Interseption DDLке
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
432
118
43
а ещё можно взять либу pyautogui, будет проще и быстрее, чем свой лисапед изобретать
 

Vladimir_30

Новичок
Пользователь
Ноя 15, 2023
4
0
1
а ещё можно взять либу pyautogui, будет проще и быстрее, чем свой лисапед изобретать
Вопрос - каким образом шлет клики с нажатиями эта библиотека? Так-то я на AutoIt написал нужные макросы, но у меня подозрение, что приложение, в котором я делаю клики понимает, что я делаю это через какое-то API, а не физической мышкой. Почему использовал AutoHotPY - там используется виртуальное устройство со своими драйверами.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 668
475
83
но у меня подозрение, что приложение, в котором я делаю клики понимает, что я делаю это через какое-то API
а как еще программно можно делать клики?

ОС не указана, буду думать, что винда
через winapi пробовали, без всяких оберток?
 

Vladimir_30

Новичок
Пользователь
Ноя 15, 2023
4
0
1
а как еще программно можно делать клики?

ОС не указана, буду думать, что винда
через winapi пробовали, без всяких оберток?
ОС - винда.
Через winapi не пробовал.

Про клики и нажатия - срипт autohotpy, текст которого я выложил в начале, я пытался запускать через AutoIt. Скрипт запускается (открывается консоль) и висит в ожидании нажатия горячей клавиши (F1 в примере). Делая "программное" нажатие в AutoIt консоль никак не реагирует. Т.е autohotpy ждет именно сигнала от физического устройства. И вот получается, что может быть такое, что прога, в которой я пытаюсь чтото автоматизировать, также видит, что сигнал виртуальный.

Надо попробовать одним скриптом autohotpy запустить другой ))
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 668
475
83
Т.е autohotpy ждет именно сигнала от физического устройства.
он ждет нажатия через свой драйвер, который отправляет команды стандартному драйверу io устройств через DeviceIoControl, поверхностно посмотрел код длл, которая используется в autohotpy - https://github.com/oblitum/Interception/tree/v1.0.1/library
из этого следует что нажатие через winapi должно сработать, может быть...
если не сработает, можно попробовать nativeapi...

так же там есть ожидание вашего нажатия - https://github.com/oblitum/Interception/blob/v1.0.1/library/interception.c#L150
то есть его можно поменять...
нужно вызвать функцию interception_wait_with_timeout
по умолчанию INFINITE - ждать бесконечно

ну и последнее обновление репозитория 6 лет назад, не факт что сейчас все работает, как надо...
 

Форум IT Специалистов