PDA

Ver la Versión Completa : Acceder a una aplicación externa


FDB
21-01-2008, 22:22:55
Buenas,

Os comento, tengo una aplicación externa (no creada por mi) la cual tiene un varios botones y un RichEdit.

Por mi parte estoy desarrollando una aplicación con un RichEdit y varios botones, mi objetivo seria que uno de los botones que contiene mi aplicación hiciese el mismo funcionamiento que realiza la aplicación externa.

Otra cosa de las que me gustaria que hiciese seria copiar el texto de mi RichEdit al RichEdit de la aplicación externa.

¿Alguien sabria guiarme sobre como podria acceder a la aplicación externa? es decir, como podria copiar el texto a la aplicacion externa y como podria pulsar el botón?

He buscado información en el foro, pero la verdad es que no encontré nada, supongo que habrá pero no encontré tal vez por no saber exactamente con que terminos buscar.

Agradeceria cualquier tipo de ayuda.

Gracias.

eduarcol
21-01-2008, 22:32:00
justo al final de este hilo se habla de lo que quieres, busca los enlaces y veras si te sirven

jachguate
22-01-2008, 02:31:08
Otra cosa de las que me gustaria que hiciese seria copiar el texto de mi RichEdit al RichEdit de la aplicación externa.

Esta es fácil.

En tu aplicación, seleccionas el texto que querés copiar y presionas ctrl+c (suponiendo que has dejado intacta la funcionalidad del richedit).

Luego activas la aplicación externa, y estando el foco en el RichEdit de marras, presionas ctrl+v.

Hasta luego.

;)

PeterPunk
22-01-2008, 13:45:02
Debes buscar el hwnd de la aplicación externa con la API FindWindow.
Luego con FindWindowEx debes buscar los componentes de esa aplicación sobre los que quieres actuar.
Por ejemplo si la aplicación externa estuviese programada en Delphi, el código de tu aplicación debería ser parecido a éste:
procedure TForm1.Button1Click(Sender: TObject);
var
handle_app: hwnd;
handle_edit: hwnd;
handle_button: hwnd;
texto: TCaption;
begin
texto:= RichEdit1.Text;
handle_app:= FindWindow(nil,'Título del programa');
handle_edit:= FindWindowEx(handle_app, 0, 'TRichEdit', nil);
SendMessage(handle_edit, WM_SETTEXT, 0, LongInt(PChar(Texto)));
handle_button:= FindWindowEx(handle_app, 0, 'TButton', nil);
PostMessage(handle_button, WM_KEYDOWN, $20, 0);
PostMessage(handle_button, WM_KEYUP, $20, 0);
end;

Si la aplicación está en otro lenguaje debes buscar el nombre de las clases de los componenentes (las que yo indiqué como TRichEdit y TButton).
Seguramente hay una forma más correcta de pulsar el botón, pero ahora mismo no caigo. Yo, aquí, lo que hago es envíar un mensaje de pulsar y despulsar la barra espaciadora ($20).

Espero que te sirva.

Saludos.