Written by xinyiman Novembre 17, 2011, 09:20:00 am21722 ViewsRating: 0 (0 Rates)Print
A volte può capitare di dover intercettare tasti premuti in altri programmi, per esempio per creare un generatore di numeri pseudo-casuali basandosi su quello che si è scritto negli ultimi 5000 tasti premuti. Bene per fare questo usiamo una funzione (purtroppo non multipiattaforma, gira solo su windows) che si chiama GetAsyncKeyState. Vediamo un piccolo esempio che logga in una TMemo i tasti premuti sulla tastiera.
procedure TForm1.Timer1Timer(Sender: TObject); var Tasto, i: integer; Esci: boolean; begin i:=0; Esci:=FALSE; while ((i<=255)AND(Esci=FALSE)) do begin if (GetAsyncKeyState(i)=-32767) then begin Memo1.Text:=Memo1.Text + Chr(i); Esci:=TRUE; end; Inc(i); end; end;
procedure TForm1.FormCreate(Sender: TObject); begin memo1.Clear; Timer1.Interval:=10; end;
end.
Bene, come potete vedere il programma è molto semplice, prima di tutto si necessita di dichiara la unit di nome Windows poi all'avvio del programma scatta un timer che ogni 10 millesimi di secondo verifica se è stato schiacciato un tasto che è compreso tra il valore numerico 0 e il valore numerico 255. Se così fosse lo trasforma in un carattere (tramite funzione Chr()) e lo stampa sull'oggetto TMemo. Potete trovare questo esempio al seguente indirizzo:
E' ovvio che queste cose possono essere usate anche per fare un keylogger (cosa che io ho fatto per strutturare un esempio, ma è un keylogger davvero banale e del tutto inoffensivo) ma lo scopo di tale articolo è quello di fare formazione non quello di dare spunti per creare software illegali. Quindi si declina ogni responsabilità per usi illeciti che si possono fare dall'uso di queste informazioni.
About the author
xinyiman registered at Italian community of Lazarus and Free Pascal on Ottobre 14, 2011, 10:56:28 pm and has posted 3285 posts in the boards since then. Last visit was Dicembre 03, 2024, 01:25:58 pm.
Questo blog non rappresenta una testata giornalistica poiché viene
aggiornato senza alcuna periodicità. Non può pertanto considerarsi un
prodotto editoriale ai sensi della legge n. 62/2001.
Questo sito utilizza cookie, anche di terze parti, per offriti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.