FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Simular click en otra aplicacion(es)
Hola a todos!!!
Espero se encuentren bien y antes que nada les deseo una feliz navidad y un prospero año nuevo. Tengo una duda y espero me puedan ayudar: Como puedo (si se puede) simular un click en una aplicación que no es mía, que ni siquiera he visto el código, por ejemplo simular un click del numero 1 (o cualquier botón) en la calculadora de windows, o por ejemplo poner el foco en un edit de la otra aplicación y escribir en él; todo esto desde mi aplicación. P.D. Siempre busco en el historial antes de preguntar algo, pero esta vez no encontre nada. Bueno, me despido envialdoles un cordial saludo... dvz |
#2
|
||||
|
||||
Creo que lo mejor es que busques la ventana indicada y el botón correspondiente (FindWindow, EnumWindows, EnumChildWindows), y le envíes el mensaje WM_LBUTTONDOWN.
También te recomiendo este hilo: http://www.clubdelphi.com/foros/show...&threadid=6010 Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
||||
|
||||
A través de este código, podras programar tu raton, para que se mueva y pulse cualquier botón automaticamente.
procedure TFrmPrincipal.ClickBotonIzquierdo(X, Y: Integer); // Esta rutina sirve para hacer un click en las coordenadas // X-Y de la pantalla. var ClientX, ClientY: Integer; Window, Parent: HWnd; WindowRect: TRECT; begin // Primero situa el cursor del ratón en la posición deseada SetCursorPos(X, Y); // Averiguamos el identificador del objeto que se encuentra // en dichas coordenadas. (No funciona para ventanas ocultas // o deshabilitadas) Window := WindowFromPoint(Point(X, Y)); // Si el identificador devuelto es distinto de 0 es que // realmente hay un objeto en dichas coordenadas if (Window <> 0) then begin // Averiguamos las coordenadas del objeto GetWindowRect(Window, WindowRect); // y trasladomos las coordenadas del punto donde se desea // hacer click a las coordenadas del objeto encontrado ClientX := X - WindowRect.Left; ClientY := Y - WindowRect.Top; // Ahora averiguamos si el objeto tiene padre, por ejemplo, // si el objeto es un botón o una lista Parent := GetAncestor(Window, GA_ROOT); // Si el objeto no tiene padre, es que es una ventana. Si // tiene padre (una ventana), utilizamos este, ya que el // mensaje debe pasarse a una ventana. if (Parent = 0) then Parent := Window; // Comprobamos que la ventana esta en primer plano, es decir, // que es la ventana activa. Si no es así, la activamos if (Parent <> GetForegroundWindow()) then begin SetForegroundWindow(Parent); end; // Y ahora le enviamos a la ventana los mensajes correspondientes // para obtener un click del ratón SendMessage(Window, WM_LBUTTONDOWN, MK_LBUTTON, ClientX or (ClientY shl 16)); SendMessage(Window, WM_LBUTTONUP, 0, ClientX or (ClientY shl 16)); end; end; Espero que te sea util |
#4
|
|||
|
|||
Una pregunta más:
¿FindWindow, EnumWindows, EnumChildWindows tambien sirve para paginas de Internet? Por ejemplo, me comentaron de un programa que revisa que unas pc's que estan en red esten trabajando bien (por ejemplo, puede que el cable se desconectó, etc), para esto, el programa manda un mensaje a una pc y si no se recibe una respuesta el programa entra a una pagina de internet para mandar un mensaje a un localizador con el nombre de la pc que tiene problemas y así poder dar solución mas rapido al problema. Bueno, lo que deseo saber concretamente es: una vez abierto el navegador de internet y estando en la página requerida, introducir el texto y el numero del radiolocalizador en sus respectivos campos, y pulsar el botón "enviar", claro todo esto desde un programa en Delphi. Espero haberme explicado bien, y ojalá puedan ayudarme. "Que tengan todos una feliz Navidad y el próximo año este lleno de dicha para todos ustedes. Aprovecho tambien para agradecer la gran ayuda que nos brindan a los novatos en este amplio mundo de la programación y Delphi. SINCERAMENTE, MUCHAS GRACIAS" dvz |
|
|
|