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