Pregunta

¿Es posible hacer parecer a un sistema que se presionó una tecla? Por ejemplo, necesito hacer que la tecla A se presione miles de veces, y es mucho tiempo para hacerlo. manualmente, me gustaría escribir algo para hacerlo por mí, y lo único que sé es Python.

Una mejor manera de decirlo, necesito emular una pulsación de tecla, I.E. No capturar una pulsación de tecla.

Más información (según lo solicitado): Estoy ejecutando Windows XP y necesito enviar las claves a otra aplicación.

¿Fue útil?

Solución

Instale las pywin32 . Luego puedes hacer lo siguiente:

import win32com.client as comclt
wsh= comclt.Dispatch("WScript.Shell")
wsh.AppActivate("Notepad") # select another application
wsh.SendKeys("a") # send the keys you want

Busque la documentación del objeto WScript.Shell (creo que está instalado de forma predeterminada en todas las instalaciones de Windows XP). Puede iniciar aquí , quizás.

EDITAR: Enviando F11

import win32com.client as comctl
wsh = comctl.Dispatch("WScript.Shell")

# Google Chrome window title
wsh.AppActivate("icanhazip.com")
wsh.SendKeys("{F11}")

Otros consejos

También puedes usar PyAutoGui para enviar pulsaciones de teclas virtuales.

Aquí está la documentación: https://pyautogui.readthedocs.org/en/latest/

import pyautogui


pyautogui.press('Any key combination')

También puede enviar claves como la tecla Mayús o la tecla Intro con:

import pyautogui

pyautogui.press('shift')

Pyautogui también puede enviar texto directo como:

import pyautogui

pyautogui.typewrite('any text you want to type')

En cuanto a presionar la tecla " A " clave 1000 veces, se vería algo como esto:

import pyautogui

for i in range(999):
    pyautogui.press("a")

alt-tab u otras tareas que requieren presionar más de una tecla al mismo tiempo:

import pyautogui

# Holds down the alt key
pyautogui.keyDown("alt")

# Presses the tab key once
pyautogui.press("tab")

# Lets go of the alt key
pyautogui.keyUp("alt")

AutoHotKey es perfecto para este tipo de tareas (automatización del teclado / reasignación)

Script para enviar " A " 100 veces:

Send {A 100}

Eso es todo

EDIT : para enviar las claves a una aplicación específica:

WinActivate Word
Send {A 100}

Marque este módulo teclado con muchas características. Instálelo Quizás con este comando:

pip3 install keyboard

Luego use este código:

import keyboard
keyboard.write('A',delay=0)

Si desea escribir 'A' varias veces, simplemente use un bucle.
Nota :
 Se presionará la tecla 'A' para todas las ventanas. Significa que el script se está ejecutando y usted fue al navegador, el script comenzará a escribir allí.

Si tu plataforma es Windows, no recomendaría Python. En su lugar, consulte Autohotkey . Confíe en mí, me encanta Python, pero en este caso, un programa macro es la herramienta ideal para el trabajo. Los scripts de Autohotkey solo son decentes (en mi opinión), pero la facilidad de simulación de entradas le ahorrará innumerables horas. Los scripts de Autohotkey se pueden compilar " " " también para que no necesite el intérprete para ejecutar el script.

Además, si esto es para algo en la Web, recomiendo iMacros . Es un complemento de Firefox y, por lo tanto, tiene una integración mucho mejor con los sitios web. Por ejemplo, puede decir " escribir 1000 'a en este formulario " en lugar de " simular un clic en el mouse en (319,400) y luego presione 'a' 1000 veces " ;.

Para Linux, desafortunadamente no he podido encontrar una buena manera de crear macros de teclado / mouse fácilmente.

Una forma alternativa de configurar la ventana preferida en primer plano antes de enviar un evento de pulsación de tecla.

hwnd = win32gui.FindWindowEx(0,0,0, "App title")
win32gui.SetForegroundWindow(hwnd)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top