Ark0s
Ноя. 16, 2017 14:58:29
Здравствуйте. Питон изучаю недавно, так что буду благодарен за помощь. Сейчас интересуюсь практической реализацией. Хочу создать своегобразные макросы для определенного процесса(окна), которые будут работать глобально (из любого рабочего стола или неполноэкранных приложений, которые не перехватывают управление). В кач-ве примера: Пусть клавиша Num1 будет выполнять Ctrl+S в блокноте, откуда бы я не нажал Num1.
Каким образом можно реализовать привязку к конкретному окну (по pid?) и как передать именно этому окну заданную команду. Сейчас представляю все на уровне запуска скрипта с пайпом, который будет кушать в качестве аргументов кейкоды клавиш, преобразовывать их в соответствующие команды для конечного процесса и передавать.
Ark0s
Ноя. 16, 2017 15:31:17
Поискал в англоязычной части сети информацию, наткнулся на pywinauto. Интересный модуль, но мне не подходит, т.к. для работы с нестандартными приложениями (не дефолтными windows приложениями, доступными пользователю без повышения привилегий) не работает.
damilkrose
Ноя. 16, 2017 18:19:03
Так биндить клавиши как ты говоришь можно в qt и в tkintere. Ещё есть модуль keyboard(вроде бы он так называется) - почитай про него.
PEHDOM
Ноя. 17, 2017 09:37:07
keyboard да, работает в фоне, единственный минус, заметил, не перхватывает нажатия когда в фокусе окно mmc, а сам кейборд запущен без повышения привилегий.
по поводу того как передавать, то тут сложнее, тот же кейборд вполне справляется, или можно использовать стандартные функции winAPI типа SendInput или SendMessage через pywin32 или ctypes.
По поводу того как реализовать привязку к окну, то ту все зависит от того что ты хочешь. если ты окно запускаешь через сабпроцесс то оно тебе ПИД возвращает, иначе гугли в сторону функций winAPI GetActiveWindow, EnumWindows, FindWindow и тд..