Ver la Versión Completa : Enviar teclas
Hola a todos, estoy desarrollando una aplicacion, que envia una cantidad de teclas a la otra
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:
//Ejemplo de llamada
For I := 0 To Memo1.Lines.Count -1 DO
Begin
cTemp := Memo1.Lines[I];
If cTemp = ''Then Break;
SendText(cTemp);
End;
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 que lo que buscas es el siguiente código:
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!
Gracias por la ayuda de ambos, se me ajusto mas la ayuda de cHackAll, gracias a ti tambien ardilla por ayudarme.
Saludos :)
Hola, una ultima, cosa, como podria verificar si la ventana primero existe?
Saludos
Hola, una ultima, cosa, como podria verificar si la ventana primero existe?
Saludos
Y yo haria algo como esto, asi:
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
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.