ホームページ >バックエンド開発 >Python チュートリアル >Python でキーボード イベントをプログラム的にシミュレートするにはどうすればよいですか?

Python でキーボード イベントをプログラム的にシミュレートするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-06 17:11:02951ブラウズ

How Can I Programmatically Simulate Keyboard Events in Python?

Python を使用してキーボード イベントを生成する方法

Python には、キーボード イベントをシミュレートするさまざまな手法が用意されており、コンピューターのキーボード操作をプログラムで操作できるようになります。 .

キーストロークのシミュレーション

直接的なクロスプラットフォームのアプローチの場合は、Windows との対話を可能にする ctypes ライブラリの使用を検討してください。 API:

  1. 必要なライブラリのインポート: ctypeswintypes、および time をインポートします。
  2. User32 DLL をロードします: Windows API User32 DLL にアクセスし、入力タイプとキー イベントの定数を定義します。
  3. 入力構造を定義します: マウスの構造を定義します、キーボード、およびハードウェア入力。
  4. 入力オブジェクトの作成: 必要なキーボードの押下または解放を表す INPUT オブジェクトを作成します。
  5. 入力の送信: user32.SendInput を使用して、入力オブジェクトをコンピューターに送信し、キー イベントをシミュレートします。

例:

<code class="python">import ctypes
from ctypes import wintypes
import time

user32 = ctypes.WinDLL('user32', use_last_error=True)

VK_A = 0x41  # Virtual key code for 'A'
KEYEVENTF_KEYUP = 0x0002  # Key event flag for key release

class KEYBDINPUT(ctypes.Structure):
    _fields_ = (("wVk", wintypes.WORD),
                ("wScan", wintypes.WORD),
                ("dwFlags", wintypes.DWORD),
                ("time", wintypes.DWORD),
                ("dwExtraInfo", wintypes.ULONG_PTR))

def press_key(key_code):
    key_input = KEYBDINPUT(wVk=key_code)
    user32.SendInput(1, ctypes.byref(key_input), ctypes.sizeof(key_input))

def release_key(key_code):
    key_input = KEYBDINPUT(wVk=key_code, dwFlags=KEYEVENTF_KEYUP)
    user32.SendInput(1, ctypes.byref(key_input), ctypes.sizeof(key_input))

# Press and release the 'A' key
press_key(VK_A)
time.sleep(1)
release_key(VK_A)</code>

追加メモ:

  • さまざまなキーをシミュレートするには、MSDN の 仮想キー コード ドキュメントを参照してください。
  • この手法は、アクティブなウィンドウ入力を受け入れない可能性のあるバックグラウンド プロセスであっても、システム全体でイベントをシミュレートすることに重点を置いています。
  • 特定の要件に応じて、他のオプションの代替ライブラリとプラットフォームを調べてください。

以上がPython でキーボード イベントをプログラム的にシミュレートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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