Simule el movimiento / clic / tecla del mouse en una aplicación que no esté activa

StackOverflow https://stackoverflow.com/questions/806376

  •  03-07-2019
  •  | 
  •  

Pregunta

Sé cómo simular eventos de mouse y teclado, pero actúan como si el usuario los hubiera hecho, por lo que afectarán a la ventana que está activa. Lo que necesito es simular una de esas entradas, pero en una ventana que no está activa.

No estoy diciendo que esté minimizado, imagina, por ejemplo, que tienes msPaint y el bloc de notas. Bloc de notas está en frente de la pintura. Y desea simular los clics del mouse en ciertas coordenadas de la ventana de pintura, pero sin activarla, es posible que el usuario siga utilizando el bloc de notas que está frente a la pintura.

¿Es esto posible? Gracias!

¿Fue útil?

Solución

Puedes hacer lo siguiente:

1) obtenga el HWND de la ventana dentro de la cual desea simular eventos. Para hacer esto, puede usar la función FindWindow , que toma dos parámetros, uno es el nombre de clase de la ventana (puede usar NULL ) y el otro el nombre del ventana (consulte la documentación de MSDN para obtener más información);

2) envíe un mensaje a la ventana deseada utilizando la función SendMessage . Los parámetros son: el identificador de ventana obtenido anteriormente ( HWND ), el mensaje (que puede ser, por ejemplo, WM_KEYDOWN , o WM_MOUSEMOVE , WM_LBUTTONDOWN etc.), el WPARAM del mensaje (que en el caso de WM_KEYDOWN es el código de clave virtual de la clave) y, finalmente, el LPARAM del mensaje (que en el caso de WM_KEYDOWN es bastante complejo y debe consultar MSDN para obtener más información).

En mi opinión, esto es suficiente para lo que pretende hacer.

Otros consejos

Bueno, si supieras JAVA, podrías usar la clase de robots.

  

Esta clase se utiliza para generar eventos de entrada nativos del sistema para fines de automatización de pruebas, demostraciones de ejecución automática y otras aplicaciones donde se necesita el control del mouse y el teclado

clase de robots Java

¿Quizás hay algo similar en .net?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top