Найти - Пользователи
Полная версия: Привязать клавишы к определенному процессу(окну)
Начало » Python для новичков » Привязать клавишы к определенному процессу(окну)
1
Ark0s
Здравствуйте. Питон изучаю недавно, так что буду благодарен за помощь. Сейчас интересуюсь практической реализацией. Хочу создать своегобразные макросы для определенного процесса(окна), которые будут работать глобально (из любого рабочего стола или неполноэкранных приложений, которые не перехватывают управление). В кач-ве примера: Пусть клавиша Num1 будет выполнять Ctrl+S в блокноте, откуда бы я не нажал Num1.
Каким образом можно реализовать привязку к конкретному окну (по pid?) и как передать именно этому окну заданную команду. Сейчас представляю все на уровне запуска скрипта с пайпом, который будет кушать в качестве аргументов кейкоды клавиш, преобразовывать их в соответствующие команды для конечного процесса и передавать.
Ark0s
Поискал в англоязычной части сети информацию, наткнулся на pywinauto. Интересный модуль, но мне не подходит, т.к. для работы с нестандартными приложениями (не дефолтными windows приложениями, доступными пользователю без повышения привилегий) не работает.
damilkrose
Так биндить клавиши как ты говоришь можно в qt и в tkintere. Ещё есть модуль keyboard(вроде бы он так называется) - почитай про него.
PEHDOM
keyboard да, работает в фоне, единственный минус, заметил, не перхватывает нажатия когда в фокусе окно mmc, а сам кейборд запущен без повышения привилегий.
по поводу того как передавать, то тут сложнее, тот же кейборд вполне справляется, или можно использовать стандартные функции winAPI типа SendInput или SendMessage через pywin32 или ctypes.
По поводу того как реализовать привязку к окну, то ту все зависит от того что ты хочешь. если ты окно запускаешь через сабпроцесс то оно тебе ПИД возвращает, иначе гугли в сторону функций winAPI GetActiveWindow, EnumWindows, FindWindow и тд..
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB