なんかいろいろこんぴゅーたかんけいのなぐりがき

なんか勉強しているこんぴゅーた関係のことのメモやそれ以外のことを書こうかなあ...

logs

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

pythonでwindowsにkeyを送る キーボード操作


import ctypes

ctypes.windll.user32.keybd_event(65,0,0,0)#Aを押す
ctypes.windll.user32.keybd_event(65,0,0x2,0)#Aを離す




これでAキーを押したことになるはず。
以前これをやろうとしたが、失敗し、今日再びやってみたらなんとか成功した。

以前失敗したのはkeybd_eventの第一引数に入れるバーチャルキーコードが間違っていたから(以前はなぜか16進数に変換してかんがえていて0x27とかを引数にしていた)



以前のプログラムではpyHookでキーボードをhookしていたため、結局キーがとめられて、出力されることはなかった。
解決策としてはキーボードをフックしているときはフックマネージャー hm を
hm.UnHookKeyboard()
して、ketbd_eventを実行し、
その後にhm.HookKeyboard()して再びhookすればいいみたい。

でkeybd_eventにつかうバーチャルコードのとりかた
以下のスクリプトを実行すればコマンドプロンプトに押したキーのキーコードが表示される。
"q"で終了する


import pyHook,pythoncom

def happen(event):
global hm
print event.Key
print event.KeyID
if event.Key == "Q":
exit()
return True


hm = pyHook.HookManager()
hm.KeyDown = happen
hm.HookKeyboard()
pythoncom.PumpMessages()

スポンサーサイト

トラックバックURL

http://ilovevim.blog42.fc2.com/tb.php/66-b6e840a4

この記事へのトラックバック

この記事へのコメント

コメント投稿フォーム

Paging Navigation

Navigations, etc.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。