¿Cómo puedo automatizar varios programas al mismo tiempo (enviar entradas de teclado y mouse)?

¿Cómo puedo automatizar varios programas al mismo tiempo (enviar entradas de teclado y mouse)?

Me gustaría usar una secuencia de comandos para enviar eventos como la entrada del teclado o del mouse para automatizar otro programa. Piense en un bot que juega un juego, por ejemplo (aunque yo no juego videojuegos).

Quiero hacer esto con varios pares (script, programa) al mismo tiempo.

Sé que puedo automatizar mi mouse y teclado en Windows usando autoit o la API win32, pero Windows tiene el concepto de "ventanas activas": solo hay una ventana activa a la vez, y estas son las ventanas que pueden recibir entradas.

Debido a este concepto de "ventana activa", no puedo automatizarmúltipleprogramas a la vez.

¿Qué alternativa tengo?

EDITAR:Necesito automatizar los programas sin tener que esperar a otro programa. Cambiar la ventana activa usando atajos de teclado no funcionará. También quiero usar la computadora mientras los programas están automatizados en segundo plano.

Respuesta1

Actualizado para incluir alternativas para bloquear la entrada del usuario actual

Autoit Usando autoit podrías hacer algo similar a

Opt("WinTitleMatchMode", 2)

While WinActive('Search')
    Send("{ALT DOWN}")
    Send("{TAB}")
    Send("{ALT UP}")
WEnd

Donde 'buscar' contiene parte del título de la ventana.

Si conoce el orden del foco de la ventana, simplemente puede enviar la pestaña suficientes veces adicionales para llegar a la ventana determinada.

El orden de alt+tab siempre está en orden de enfoque inverso.

Win32 Esto ha sido respondido en otros hilos y profundiza en la programación. Si desea seguir esta ruta, deberá enviar los mensajes de Windows al proceso que desee. Yo miraría:¿Cómo envío pulsaciones de teclas a una ventana sin tener que activarla usando la API de Windows?

No parece fiable y tendría muchos inconvenientes. Es necesario hacer suposiciones sobre la forma en que se maneja la entrada del teclado en las aplicaciones dadas.

Sin saber lo que está tratando de lograr, puedo sugerirle usar una máquina virtual y permitir que esa instancia ejecute las macros/scripts. Esto debería permitir al usuario continuar usando la computadora sin ocupar el escritorio que está usando.

información relacionada