"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso simular programaticamente eventos de teclado em Python?

Como posso simular programaticamente eventos de teclado em Python?

Publicado em 2024-11-08
Navegar:437

How Can I Programmatically Simulate Keyboard Events in Python?

Como gerar eventos de teclado usando Python

Python oferece várias técnicas para simular eventos de teclado, permitindo que você interaja com as ações do teclado do seu computador de forma programática .

Simulando pressionamentos de teclas

Para uma abordagem direta e multiplataforma, considere usar a biblioteca ctypes, que permite interagir com o Windows API:

  1. Importar bibliotecas necessárias: Importar ctypes, wintypes e time.
  2. Carregue a DLL User32: Acesse a DLL User32 da API do Windows e defina constantes para tipos de entrada e eventos principais.
  3. Defina estruturas de entrada: Defina estruturas para mouse , teclado e entradas de hardware.
  4. Compor objeto de entrada: Crie um objeto INPUT para representar o pressionamento ou liberação desejado do teclado.
  5. Enviar entrada: Use user32.SendInput para transmitir o objeto de entrada para o computador, simulando o evento chave.

Exemplo:

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)

Notas adicionais:

  • Para simular várias chaves, consulte a documentação Códigos de chave virtual no MSDN.
  • Essa técnica se concentra na simulação de eventos em todo o sistema, mesmo para processos em segundo plano que podem não aceitar entrada de janela ativa.
  • Explore bibliotecas e plataformas alternativas para outras opções, dependendo de seus requisitos específicos.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3