Ver Mensaje Individual
  #4  
Antiguo 22-01-2008
Avatar de PeterPunk
PeterPunk PeterPunk is offline
Miembro
 
Registrado: ene 2008
Ubicación: Vigo
Posts: 22
Reputación: 0
PeterPunk Va por buen camino
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:
Código Delphi [-]
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.
Responder Con Cita