La Web del Programador: Comunidad de Programadores
 
    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