python - libreria - pynput
Teclas presionadas en Python (7)
¿Es posible hacer que le parezca a un sistema que se presionó una tecla, por ejemplo, necesito hacer que se presione una tecla miles de veces, y me cuesta mucho tiempo hacerlo manualmente, me gustaría escribir algo para hacer? es para mí, y lo único que sé bastante bien es Python.
Una mejor manera de decirlo, necesito emular una pulsación de tecla, IE no captura 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.
Probablemente sea posible , pero, ¿dónde quieres que vaya la tecla presionada? Para otra aplicación? Ese sería probablemente el caso de entender el toolkit de ventanas de su plataforma y enviar los mensajes correctos a la ventana derecha.
Aclare sus requisitos, y estoy seguro de que podemos ayudar.
Si su plataforma es Windows, en realidad no recomendaría Python. En cambio, mira en Autohotkey . Confíe en mí, me encanta Python, pero en esta circunstancia, un macroprograma es la herramienta ideal para el trabajo. Las secuencias de comandos de Autohotkey son solo decentes (en mi opinión), pero la facilidad de simular la entrada le ahorrará incontables horas. Los scripts de Autohotkey también se pueden "compilar", por lo que no es necesario que el intérprete ejecute 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 de mouse en (319,400) y luego presionar'' a ''1000 veces".
Para Linux, desafortunadamente no he podido encontrar una buena manera de crear fácilmente macros de teclado / mouse.
AutoHotKey es perfecto para este tipo de tareas (automatización / reasignación de teclado)
Script para enviar "A" 100 veces:
Send {A 100}
Eso es todo
EDITAR : para enviar las claves a una aplicación específica:
WinActivate Word
Send {A 100}
Otra forma de establecer la ventana de preferir en primer plano antes de enviar evento de pulsación de tecla.
hwnd = win32gui.FindWindowEx(0,0,0, "App title")
win32gui.SetForegroundWindow(hwnd)
También puede 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 ese:
import pyautogui
pyautogui.typewrite(''any text you want to type'')
En cuanto a presionar la tecla "A" 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 que se presione 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")
Compruebe este teclado del módulo con muchas funciones. Instálelo, quizás con este comando:
pip3 install keyboard
Entonces usa 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 toda la ventana. Significa que la secuencia de comandos se está ejecutando y se fue al navegador, la secuencia de comandos comenzará a escribirse allí.
Instala las extensiones de pywin32 . Entonces 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 por defecto en todas las instalaciones de Windows XP). Puedes comenzar aquí , tal vez.
EDITAR: Enviando F11
import win32com.client as comctl
wsh = comctl.Dispatch("WScript.Shell")
# Google Chrome window title
wsh.AppActivate("icanhazip.com")
wsh.SendKeys("{F11}")