"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Python에서 키보드 이벤트를 프로그래밍 방식으로 시뮬레이션하려면 어떻게 해야 합니까?

Python에서 키보드 이벤트를 프로그래밍 방식으로 시뮬레이션하려면 어떻게 해야 합니까?

2024-11-08에 게시됨
검색:995

How Can I Programmatically Simulate Keyboard Events in Python?

Python을 사용하여 키보드 이벤트를 생성하는 방법

Python은 프로그래밍 방식으로 컴퓨터의 키보드 동작과 상호 작용할 수 있도록 키보드 이벤트를 시뮬레이션하는 다양한 기술을 제공합니다. .

키 입력 시뮬레이션

직접 및 크로스 플랫폼 접근 방식인 경우 Windows API와 상호 작용할 수 있는 ctypes 라이브러리 사용을 고려해보세요.

  1. 필요한 라이브러리 가져오기: 가져오기 ctypes, wintypes시간.
  2. User32 DLL 로드: Windows API User32 DLL에 액세스하고 입력 유형 및 키 이벤트에 대한 상수를 정의합니다.
  3. 입력 구조 정의: 마우스, 키보드 및 하드웨어 입력의 구조를 정의합니다.
  4. 입력 작성 object: 원하는 키보드 누르기 또는 떼기를 나타내는 INPUT 개체를 만듭니다.
  5. 입력 보내기: user32.SendInput를 사용하여 입력 개체를 컴퓨터로 전송하여 키를 시뮬레이션합니다. event.

예:

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