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.