Pregunta: | 20399 - SIMULAR CLIC SOBRE APLICACIÓN EXTERNA SIN ACCESO POR TECLADO |
Autor: | David Garcia |
Hola. Estoy programando una aplicación para que ejecute una especie de macro, es decir, moverá el ratón a un determinado punto y realizará un clic en dicho lugar, después se moverá a otro, etc.
La función para mover el ratón ya la tengo, pero me falta la de simular un clic. NOTA: El clic se realizará sobre una aplicación externa, por tanto no puedo acceder a su código. Quiero simplemente engañar al PC haciéndole creer que he presionado el botón, independientemente de que el cursor esté en mi aplicación, en el Word, sobre el botón de Inicio, o donde sea. Insisto tanto porque he visto a dos amigos de LWP preguntar lo mismo que yo y darle respuestas que no me sirven (y sospecho que a ellos tampoco) por no comprenderse bien la pregunta. Espero que no me suceda lo mismo. Muchas gracias, y felicidades por esta Web, una de las mejores que conozco. |
Respuesta: | Fernando Niño |
Hola. Lo que quieres hacer se logra con una API de Windows, lo cual seria asi:
Option Explicit Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long) Const MOUSE_MOVED = &H1 Const MOUSEEVENTF_LEFTDOWN = &H2 ' botón izquierdo presionado Const MOUSEEVENTF_LEFTUP = &H4 ' botón izquierdo soltado Const MOUSEEVENTF_MIDDLEDOWN = &H20 ' botón central presionado Const MOUSEEVENTF_MIDDLEUP = &H40 ' botón central soltado Const MOUSEEVENTF_RIGHTDOWN = &H8 ' botón derecho presionado Const MOUSEEVENTF_RIGHTUP = &H10 ' botón derecho soltado Private Sub Click_Mouse() mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 End End Sub Con esto se simula un click donde se encuentra el cursor del mouse |
Respuesta: | Oscar De León |
Hola David
Quisiera saber que S.O. estás usando, Win 95/98 ó NT/2000. Te lo pregunto pues en NT/2000 no es posible meterse en las demás aplicaciones y enviarles comandos, pues la seguridad del sistema no lo permite (quizá algún hacker lo logre) Si estás es Win95/98, existe la posibilidad de enviarles mensajes, utilizando las apis de windows, obteniendo el handle de la aplicación que deseas "clickear" y enviandole el WM_MESSAGE correspondiente. En la MSDN que viene con VB6 hay bastante info Saludos |