Найти - Пользователи
Полная версия: Нажатие клавиш в стороннем окне
Начало » Python для новичков » Нажатие клавиш в стороннем окне
1
Goward
Здравствуйте,
Следующий код реализует запуск функции при нажатии клавиши 4:
import msvcrt
while True:
    char = msvcrt.getch()
    if char == b'4':
        function()
Однако я так и не смог добиться того, чтобы это работало, когда активно стороннее окно. Например, я запускаю скрипт, открываю окно блокнота, жму клавишу 4 и выполняется function(), которая в блокноте что-нибудь пишет или нажимает. Вышеприведенный код работает только когда активно окно самого скрипта(py.exe).
Прошу помощи от более опытных кодеров
Заранее большое спасибо!
Goward
Неужели никто не знает? Хотя бы догадки и предположения. Хотя бы в какую сторону думать, подскажите
Goward
Сделал вот так:
import ctypes
from ctypes import wintypes
import win32con
def function():
  print("Yahoo!")
ctypes.windll.user32.RegisterHotKey (None, 1, 0, 0x72)
msg = wintypes.MSG()
while ctypes.windll.user32.GetMessageA (ctypes.byref(msg), None, 0, 0) != 0:
    if msg.message == win32con.WM_HOTKEY:
        function()
Теперь работает как нужно, однако я не понимаю 3 строчки из этого кода(нашел на просторах гугла):
.......
msg = wintypes.MSG()
while ctypes.windll.user32.GetMessageA (ctypes.byref(msg), None, 0, 0) != 0:
    if msg.message == win32con.WM_HOTKEY:
.......
Могли бы вы пояснить в подробностях, что эти три строки делают?
Спасибо!
doza_and
Каждое приложение получает только свои нажатия на кнопки. Если вы им хотите управлять, то используйте программное API которое предусмотрено разработчиком.

Если вам лень его найти или его вообще нет можно использовать pywinauto. Это крайне костыльное решение и заниматься этим не рекомендую.

Если программа не предоставляет api для автоматизации то ее лучше и не использовать для этого.

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