2012-02-14 2 views
1

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

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

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

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

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

EDIT: Я тоже пытался что-то вдоль линий этого:

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 ничего не сделал.

+2

Я думаю, что это [сообщение] (http://stackoverflow.com/a/2004267/673590) может быть тем, чем вы являетесь. – tharen

+0

Спасибо! Это хорошо работает – dave

ответ

1

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

+1

Можете ли вы привести пример? Документация мне очень трудно просеять. См. Править. – dave

Смежные вопросы