ホームページ >バックエンド開発 >Python チュートリアル >ctypes を使用して Python でキーボード イベントをシミュレートする方法
Python でキーボード イベントを生成する方法
コンピューター システムがシミュレートされたキーボード イベントを実際のキーストロークとして扱うには、次のようなソリューションが必要です。入力フィールドに文字を送信するだけではありません。実行可能なオプションの 1 つは、ctypes ライブラリを使用してオペレーティング システムの入力システムと直接通信することです。
ctypes の使用
ctypes は、C 互換ライブラリと対話する方法を提供します。および Python 内の関数。 ctypes を使用してキーボード イベントをシミュレートするには、次の手順に従います。
<code class="python">import ctypes from ctypes import wintypes import time</code>
<code class="python">user32 = ctypes.WinDLL('user32', use_last_error=True)</code>
<code class="python"># Keyboard input structure KEYBDINPUT = ctypes.Structure() KEYBDINPUT._fields_ = (("wVk", wintypes.WORD), ("wScan", wintypes.WORD), ("dwFlags", wintypes.DWORD), ("time", wintypes.DWORD), ("dwExtraInfo", wintypes.ULONG_PTR)) # General input structure INPUT = ctypes.Structure() INPUT._fields_ = (("type", wintypes.DWORD), ("ki", KEYBDINPUT))</code>
<code class="python">def PressKey(hexKeyCode): x = INPUT(type=INPUT_KEYBOARD, ki=KEYBDINPUT(wVk=hexKeyCode)) user32.SendInput(1, ctypes.byref(x), ctypes.sizeof(x)) def ReleaseKey(hexKeyCode): x = INPUT(type=INPUT_KEYBOARD, ki=KEYBDINPUT(wVk=hexKeyCode, dwFlags=KEYEVENTF_KEYUP)) user32.SendInput(1, ctypes.byref(x), ctypes.sizeof(x))</code>
<code class="python">PressKey(VK_MENU) # Alt PressKey(VK_TAB) # Tab ReleaseKey(VK_TAB) # Tab~ time.sleep(2) ReleaseKey(VK_MENU) # Alt~</code>
その他の考慮事項
hexKeyCode は仮想キーボード マッピングを参照することに注意してくださいWindows API で定義されているとおりです。これらのコードのリストは、Microsoft の MSDN ドキュメントで参照できます。
このアプローチにより、キーボード イベントを低レベルでシミュレートし、システムによって実際のキーストロークとして扱われることが保証されます。
以上がctypes を使用して Python でキーボード イベントをシミュレートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。