Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Enviar texto a ventana del navegador (https://www.clubdelphi.com/foros/showthread.php?t=96496)

Arturo.Molina 21-11-2023 14:12:05

Enviar texto a ventana del navegador
 
Hola amigos,
necesito vuestra inestimable ayuda.

Desde mi programa debo abrir una página web determinada, rellenar varios campos (incluido uno de correo electrónico) y pulsar un botón de dicha página.

No tengo problemas para abrir la web y localizar los botones correspondientes, pero ¿Cómo puedo enviar el contenido de una cadena que incluye el carácter "@"?

Saludos y gracias

Neftali [Germán.Estévez] 21-11-2023 15:16:35

Es un tema que ya hemos hablado en otras ocasiones en el club, si buscan deberían aparecerte hilos al respecto.
Puedes buscar los campos y enviar los datos (aunque puede variar dependiendo de la tecnología con que esté hecha la página).


Algunos ejemplos, aunque si buscas encontrarás más:

Arturo.Molina 21-11-2023 15:23:28

Gracias Germán, pero lo que yo busco es cómo enviar una cadena a otro programa que está ejecutándose.

La idea es simular que estoy escribiendo en la ventana activa

pgranados 21-11-2023 21:13:28

Por lo que mencionas estas haciendo scraping a una pagina.

¿de que forma aparece el mensaje en la pagina?

Neftali [Germán.Estévez] 21-11-2023 22:00:09

Cita:

Empezado por Arturo.Molina (Mensaje 553352)
Gracias Germán, pero lo que yo busco es cómo enviar una cadena a otro programa que está ejecutándose.
La idea es simular que estoy escribiendo en la ventana activa


Si la ventana activa es un navegador, como me ha parecido entender según el título del hilo y el mensaje anterior, en esos hilos tienes cómo hacerlo.
Si no es un navegador y se trata de un ejecutable (tipo Delphi) se me ocurre que debes buscar ventanas, componentes y enviar texto utilizando mensajes (SendMessage/PostMessages)

Arturo.Molina 22-11-2023 11:29:22

Hola a todos,
creo que no me he explicado lo suficientemente claro.

Solamente necesito saber como enviar un texto a una ventana del navegador (en este caso concreto es el navegador, pero podría ser, por ejemplo, una ventana de Word).

He revisado la función SendMessage tal y como me comenta Neftali pero debo estar espeso porque no consigo que llegue el texto...

Aquí el código que utilizo:

Código Delphi [-]
//Funcion para enviar texto
procedure TfPrincipal.EnviarTexto(Texto: string);
const
  WM_TEXTMSG = WM_USER + 103;
var
   Window : THandle;
begin
    if Texto <> '' then begin
      Window := FindWindow(NIL, PChar('Club Delphi - Brave') );

      //Comprobamos si está abierta la aplicación que recibirá los datos
      if Window = 0 then
        MessageDlg ('No se ha encontrado abierta la pagina "Club Delphi - Brave"', mtInformation, [mbok], 0)
      else begin
        SendMessage( Window, WM_TEXTMSG, 0, UnicodeString( Texto ) );
      end;
    end;
end;

Y esta es la respuesta al intentar ejecutarlo:

Error: Incompatible type for arg no. 4: Got "UnicodeString", expected "Int64"

La idea es, en una ventana abierta y con el foco en un campo de texto, que mi programa escriba en el.

En el ejemplo que pongo, el cursor YA se encuentra en el campo usuario de la web del Club Delphi y yo debo enviarle una cadena (en este caso, una dirección de correo electrónico, tal como "correo@electronico.com"), cambiar al campo pass y enviarle otra cadena.

Arturo.Molina 22-11-2023 12:26:16

Bueno, buceando por ahí, al final lo he conseguido...

Código Delphi [-]
procedure TfPrincipal.EnviarTexto(Texto: string);
var
    Window : THandle;
    i: integer;
begin
     if Texto <> '' then begin
       Window := FindWindow(NIL, PChar('Club Delphi - Brave') );

       //Comprobamos si está abierta la aplicación que recibirá los datos
       if Window = 0 then
         MessageDlg ('No se ha encontrado abierta la pagina "Club Delphi - Brave"', mtInformation, [mbok], 0)
       else
         for i := 1 to Length(Texto) do
           SendMessage(window, WM_CHAR, dword(Texto[i]), 0);
     end;
end;

Gracias a todos


La franja horaria es GMT +2. Ahora son las 05:57:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi