Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Enviar teclas (https://www.clubdelphi.com/foros/showthread.php?t=45145)

b2k 24-06-2007 01:27:39

Enviar teclas
 
Hola a todos, estoy desarrollando una aplicacion, que envia una cantidad de teclas a la otra

Código:

SendKeys(Pchar(Ventana + #13));
primero yo detecto la ventana a la que le voy a enviar el mensaje, pero lo que quiero es, crear una funcion donde se ejecute ese parametros una cantidad de veces que yo quiero y con un sleep intermedio por cada una.

Gracias por su atencion

ArdiIIa 24-06-2007 01:53:57

Veamos si esto te sirve:




Código Delphi [-]
//Ejemplo de llamada
For I := 0 To Memo1.Lines.Count -1 DO
    Begin
     cTemp := Memo1.Lines[i];
     If cTemp = ''Then Break;
     SendText(cTemp);
    End;

Código Delphi [-]
Procedure TFormMain.SendText( Text : String);
Var J : Integer;
Begin
     For J := 0 to Length(Text) DO
       PostMessage(HandleVentana ,WM_CHAR,Ord( Text[J]),0);
       PostMessage(HandleVentana ,WM_KEYDOWN,VK_RETURN,0);
End;


El sleep lo puede meter donde quieras....

cHackAll 24-06-2007 02:48:27

Creo yo...
 
Creo que lo que buscas es el siguiente código:

Código Delphi [-]
procedure SendKeys(Keys: PChar; const milliseconds: Cardinal);
var vk: Cardinal;
begin
 while Keys[0] <> #0 do
  begin
   vk := VkKeyScan(Keys[0]);
   Inc(Cardinal(Keys));
   keybd_event(vk, 0, 0, 0);
   keybd_event(vk, 0, KEYEVENTF_KEYUP, 0);
   Sleep(milliseconds);
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 SetForegroundWindow(FindWindow('notepad', nil));
 SendKeys('hola'+#13, 100);
end;

Espero os sea de utilidad; Saludos!

b2k 24-06-2007 06:26:22

Gracias por la ayuda de ambos, se me ajusto mas la ayuda de cHackAll, gracias a ti tambien ardilla por ayudarme.

Saludos :)

b2k 24-06-2007 07:42:13

Hola, una ultima, cosa, como podria verificar si la ventana primero existe?

Saludos

MaMu 24-06-2007 08:23:04

Cita:

Empezado por b2k
Hola, una ultima, cosa, como podria verificar si la ventana primero existe?

Saludos

Y yo haria algo como esto, asi:

Código Delphi [-]
procedure TMain.BotonExisteVentana1Click(Sender: TObject);
 var
    pos:integer;
    ventana:string; 
 begin
   ventana:='caption_de_la_ventana';
   pos:=FindWindow(nil,pChar(ventana));
   If pos=0
     then ShowMessage('No no! esa ventana no está!!!')
     else  ShowMessage('Si, la ventana está');
 end;

Saludos


La franja horaria es GMT +2. Ahora son las 14:01:03.

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