ホームページ >バックエンド開発 >Python チュートリアル >ctypes を使用して Python でキーボード イベントをシミュレートする方法

ctypes を使用して Python でキーボード イベントをシミュレートする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-08 20:39:02416ブラウズ

How to Simulate Keyboard Events in Python Using ctypes?

Python でキーボード イベントを生成する方法

コンピューター システムがシミュレートされたキーボード イベントを実際のキーストロークとして扱うには、次のようなソリューションが必要です。入力フィールドに文字を送信するだけではありません。実行可能なオプションの 1 つは、ctypes ライブラリを使用してオペレーティング システムの入力システムと直接通信することです。

ctypes の使用

ctypes は、C 互換ライブラリと対話する方法を提供します。および Python 内の関数。 ctypes を使用してキーボード イベントをシミュレートするには、次の手順に従います。

  1. 必要なモジュールをインポートします:
<code class="python">import ctypes
from ctypes import wintypes
import time</code>
  1. 関連する Windows DLL をロードします:
<code class="python">user32 = ctypes.WinDLL('user32', use_last_error=True)</code>
  1. 必要な構造を定義します:
<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>
  1. キーを押したり放したりするためのヘルパー関数を定義します:
<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>
  1. 関数を使用してキー イベントをシミュレートします:
<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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。