2012-02-14 22 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}") 

しかし、私はこれを達成するための任意の文書化の方法を見つけることができません。私は地獄が正しいをつかむ方法を見つけ出すことはできません文書から -

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

私はこのpost(http://stackoverflow.com/a/2004267/673590)があなたの後であるかもしれないと思います。 – tharen

+0

ありがとう!これは本当にうまくいった – dave

答えて

1

win32api.PostMessageを使用すると、WM_KEYDOWNWM_KEYUPというメッセージを送信できます。パラメータのドキュメントについては、MSDNを参照してください。定数はwin32conモジュールで定義されています。

+1

例を挙げることはできますか?ドキュメンテーションは私が目を通すことが本当に難しいです。編集を参照してください。 – dave

関連する問題