Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Enviar texto a Bloc de Notas (o cualquier programa ABIERTO) (https://www.clubdelphi.com/foros/showthread.php?t=94321)

TiammatMX 27-11-2019 16:36:51

Enviar texto a Bloc de Notas (o cualquier programa ABIERTO)
 
Buen día/tarde/noche (según aplique)...

Retomando la programación en Delphi después de unas "vacaciones" forzadas, les comento. Tengo abierta una ventana de bloc de notas en blanco, mi aplicación en Delphi y mucho entusiasmo, pero ahora debo ESCRIBIR en el bloc de notas el contenido de tres TEdit en un orden específico al momento de pulsar un botón. Ya me dediqué a buscar en el memorial del club, pero no encuentro nada medianamente aproximado a lo que requiero.

¿Algún alma caritativa que pueda apoyarme con éste detalle? Y sí, perro viejo sí aprende nuevos trucos con la motivación adecuada...

Casimiro Notevi 27-11-2019 17:50:55

No sé si esto te sirve.
https://www.thoughtco.com/basic-clip...-paste-1058406

TiammatMX 27-11-2019 17:58:14

Cita:

Empezado por Casimiro Notevi (Mensaje 534606)
No sé si esto te sirve...

No, Casi, no quiero un "copipasteado", que eso ya lo tengo "dominado", más bien aspiro a "tengo mi aplicación abierta (bloc de notas), la pantalla en Delphi, le tecleo datos a la pantalla, pulso un botón y mágicamente aparecen en el bloc de notas"... :D

aposi 27-11-2019 18:26:30

mira si con esto te funciona.




https://stackoverflow.com/questions/...blem-in-delphi

bucanero 27-11-2019 18:54:08

Hola!!,

prueba este código, información obtenida desde aqui:
https://stackoverflow.com/questions/...n-using-winapi

Código Delphi [-]
procedure TForm2.Button1Click(Sender: TObject);
var
  notepad, edit: HWND;
  i: integer;
  s: string;
begin
  notepad := FindWindow('notepad', nil);
  edit := FindWindowEx(notepad, FindWindow('Edit', nil), nil, nil);

  s := Edit1.Text;
  for i := 1 to Length(s) do
    SendMessage(edit, WM_CHAR, dword(s[i]), 0);
end;

TiammatMX 27-11-2019 20:11:29

¡¡listoooo!!
 
Pues bien, gracias a su colaboración quedó así...

Código Delphi [-]
procedure TForm1.EnviarTexto(const sTexto: string);
var
  SInfo: TStartupInfo;
  PInfo: TProcessInformation;
  Notepad: HWND;
  NoteEdit: HWND;
  ThreadInfo: TGUIThreadInfo;
begin

  ZeroMemory(@SInfo, SizeOf(SInfo));
  SInfo.cb := SizeOf(SInfo);
  ZeroMemory(@PInfo, SizeOf(PInfo));
  WaitForInputIdle(pInfo.hProcess, 5000);

  Notepad := FindWindow('Notepad', nil);

  if Bool(Notepad) then begin
    NoteEdit := FindWindowEx(Notepad, 0, 'Edit', nil);
    if Bool(NoteEdit) then begin
      SendMessage(NoteEdit, WM_SETTEXT, 0, Longint(sTexto));
      SendMessage(NoteEdit, EM_SETMODIFY, WPARAM(True), 0);
    end;

  end;
end;

La llamada...

Código Delphi [-]
var
  sTexto : string;
begin
  sTexto := edtBoleta.Text + Chr(13) + edtCamion.Text + Chr(13) + edtCargadora.Text + Chr(13);
  EnviarTexto(sTexto);
.
.
.
.
end;

Y el resultado (en Notepad, obviamente)...

5C64654654
Y9878
X6546

Casimiro Notevi 27-11-2019 22:43:46

^\||/^\||/^\||/

kurono 27-11-2019 23:58:07

y como se haria en android

kurono 28-11-2019 00:31:17

disculpen que respondi sin probar el codigo y que acabo de hacer y veo que solo funciona con bloc de notas con otras aplicaciones como word no funciona obviamente esto es cambiando el nombre la la aplicacion de la variable notepad

TiammatMX 28-11-2019 14:15:05

...y todo se complicó...
 
Y ahora que quiero hacer que el programita funcione con otra aplicación (el objetivo real de hacer ésto), ya no hace nada...

Todo está basado en el nombre de la aplicación, supongo yo. Pruebo y les comento.

ecfisa 28-11-2019 17:41:42

Hola TiammatMX.

Fijate si en estos enlaces, encontras algo que te pueda ayudar:
Saludos :)

TiammatMX 28-11-2019 17:50:53

Cita:

Empezado por ecfisa (Mensaje 534615)
Hola TiammatMX.

Fijate si en estos enlaces, encontras algo que te pueda ayudar:
Saludos :)

Por esto y por muchas cosas más, ¡¡TE AMO!! Gracias...

ecfisa 28-11-2019 18:22:16

¡Bah... a cuantos le dirás lo mismo ! :D:D:D

Saludos :)


La franja horaria es GMT +2. Ahora son las 21:10:30.

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