Как эмулировать нажатие и удержание с помощью pywin32 - PullRequest
1 голос
/ 14 февраля 2012

Я пытаюсь написать скрипт Python для отправки сигнала нажатия и удержания клавиши. Сейчас все, что мне удалось сделать, это следующее:

import win32com.client
shell = win32com.client.Dispatch("Wscript.Shell")
shell.SendKeys("z")

Однако, это только отправляет мгновенное нажатие клавиши. То, что я хотел бы сделать, это ключ вниз и ключ вверх, что-то вроде:

shell.SendKeys("z{down}")
time.sleep(.25) 
shell.SendKeys("z{up}")

Но я не могу найти никакого документированного способа добиться этого.

РЕДАКТИРОВАТЬ: Я также пробовал что-то вроде этого:

import time
import win32com.client
import win32api
import win32gui
import win32con

time.sleep(2)
shell = win32com.client.Dispatch("Wscript.Shell")
win32api.SendMessage(win32con.HWND_TOP, win32con.WM_CHAR, 90, 0) 
win32api.SendMessage(win32con.HWND_BROADCAST, win32con.WM_KEYDOWN, 90, 1) 
time.sleep(.25)
win32api.SendMessage(win32con.HWND_BROADCAST, win32con.WM_KEYUP, 90, 1) 

Вся эта штука с HWND действительно для меня загадка - из документации я не могу понять, как, черт возьми, захватить правильное окно. Кроме того, WM_CHAR, кажется, работает, но WM_KEYDOWN / KEYUP на самом деле ничего не сделал.

1 Ответ

1 голос
/ 14 февраля 2012

Вы можете использовать win32api.PostMessage для отправки WM_KEYDOWN и WM_KEYUP сообщений.См. MSDN для документации параметров.Константы определены в модуле win32con.

...