このraw_input
関数は、別のプログラムへのキーストロークをシミュレートしません。プロンプトをコンソールに出力し、そのコンソールに応答を入力するのを待って、入力した内容をスクリプトに返します。ここでは完全に役に立ちません。
実際に必要なのは、マウス イベントを送信するのと同じ方法で、キーボード イベントをアプリに送信する方法です。
Windows Scripting Host が存在することに依存できる場合 (Vista および XPSP3 以降には常に存在し、それ以前の XP にはインストールできると思います)、低レベルで処理を行う代わりにそれを使用できます。
wshell = win32com.client.Dispatch("WScript.Shell")
wshell.SendKeys("foo")
それ以外の場合は、ウィンドウへのハンドルを取得する必要があります (これは win32api ドキュメントで説明されているため、既に知っていると思います)。次に、次のようにします。
def sendkey(hwnd, keycode):
win32api.PostMessage(hwnd, win32con.WM_CHAR, keycode, 0)
これは、タブ、エスケープ、またはリターンなどの特殊キーを適切に処理しません。そのためには、代わりに と を送信する必要がありWM_KEYDOWN
ますWM_KEYUP
。しかし、あなたの使用のために、WM_CHAR
あなたが望むものです。
また、文字列内の各文字のキーコードを検索する関数も必要です。というのは、'100'
実際には , , にすぎord('1')
ませord('0')
んord('0')
が、すべてに当てはまるわけではありません。
SendKeys
これらすべてをまとめた同様のモジュールを見たいと思うかもしれません。
または、次のような高レベルの自動化ライブラリを使用することもできますAutoPy
(これらには多くのものがあり、SO を検索すると、それらすべての詳細が表示されます)。
または、マウス クリックやキー イベントに関してブラウザーを自動化しようとすることを忘れて、代わりに を使用して適切な (Web) レベルで処理することをお勧めしますselenium
。
または、ブラウザの自動化を忘れて、代わりに を使用して独自のスクリプトでブラウザをシミュレートしたい場合がありますmechanize
。