Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 16, 2017 14:58:29

Ark0s
Зарегистрирован: 2017-11-16
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Привязать клавишы к определенному процессу(окну)

Здравствуйте. Питон изучаю недавно, так что буду благодарен за помощь. Сейчас интересуюсь практической реализацией. Хочу создать своегобразные макросы для определенного процесса(окна), которые будут работать глобально (из любого рабочего стола или неполноэкранных приложений, которые не перехватывают управление). В кач-ве примера: Пусть клавиша Num1 будет выполнять Ctrl+S в блокноте, откуда бы я не нажал Num1.
Каким образом можно реализовать привязку к конкретному окну (по pid?) и как передать именно этому окну заданную команду. Сейчас представляю все на уровне запуска скрипта с пайпом, который будет кушать в качестве аргументов кейкоды клавиш, преобразовывать их в соответствующие команды для конечного процесса и передавать.

Отредактировано Ark0s (Ноя. 16, 2017 15:00:46)

Офлайн

#2 Ноя. 16, 2017 15:31:17

Ark0s
Зарегистрирован: 2017-11-16
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Привязать клавишы к определенному процессу(окну)

Поискал в англоязычной части сети информацию, наткнулся на pywinauto. Интересный модуль, но мне не подходит, т.к. для работы с нестандартными приложениями (не дефолтными windows приложениями, доступными пользователю без повышения привилегий) не работает.

Офлайн

#3 Ноя. 16, 2017 18:19:03

damilkrose
Зарегистрирован: 2017-11-10
Сообщения: 18
Репутация: +  -1  -
Профиль   Отправить e-mail  

Привязать клавишы к определенному процессу(окну)

Так биндить клавиши как ты говоришь можно в qt и в tkintere. Ещё есть модуль keyboard(вроде бы он так называется) - почитай про него.

Офлайн

#4 Ноя. 17, 2017 09:37:07

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Привязать клавишы к определенному процессу(окну)

keyboard да, работает в фоне, единственный минус, заметил, не перхватывает нажатия когда в фокусе окно mmc, а сам кейборд запущен без повышения привилегий.
по поводу того как передавать, то тут сложнее, тот же кейборд вполне справляется, или можно использовать стандартные функции winAPI типа SendInput или SendMessage через pywin32 или ctypes.
По поводу того как реализовать привязку к окну, то ту все зависит от того что ты хочешь. если ты окно запускаешь через сабпроцесс то оно тебе ПИД возвращает, иначе гугли в сторону функций winAPI GetActiveWindow, EnumWindows, FindWindow и тд..



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Ноя. 17, 2017 09:37:37)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version