」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Python 中以程式設計方式模擬鍵盤事件?

如何在 Python 中以程式設計方式模擬鍵盤事件?

發佈於2024-11-08
瀏覽:623

How Can I Programmatically Simulate Keyboard Events in Python?

如何使用Python 產生鍵盤事件

Python 提供了各種模擬鍵盤事件的技術,使您能夠以程式設計方式與電腦的鍵盤操作進行互動.

模擬擊鍵

對於直接和跨平台的方法,請考慮使用ctypes 庫,它允許您與Windows API 互動:

  1. 匯入必要的函式庫: 導入ctypeswintypestime.
  2. . ]
  3. 載入User32 DLL: 存取Windows API User32 DLL 並定義輸入型別和按鍵事件的常數。
  4. 定義輸入結構: 定義滑鼠、鍵盤和硬體輸入的結構。
  5. 組合輸入物件: 建立一個INPUT 物件來表示所需的鍵盤按下或release.
  6. 發送輸入: 使用user32.SendInput將輸入物件傳送到計算機,模擬按鍵事件。

範例:

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)

附加說明:

  • 要模擬各種按鍵,請參閱 MSDN 上的虛擬按鍵代碼文件。
  • 此技術專注於模擬系統範圍內的事件,即使對於可能不接受活動視窗的後台進程也是如此輸入。
  • 根據您的特定要求,探索其他選項的替代庫和平台。
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3