Delphi - keylogger

Programovacie jazyky, rady, poradňa...
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Delphi - keylogger

Príspevok od používateľa DomCZo »

Cavte. Mal by som taky problem, chcem odchytavat stlacene tlacitka mimo Form1 a zapisovat si ich do textaku. Jeden riadok = jedno stlacenie klavesy:

Kód: Vybrať všetko

metoda[keyup/keydown] | [klavesa]
keyup|UP
keydown|UP
keydown|LEFT
...
Odchytavat ich viem cez:

Kód: Vybrať všetko

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_UP:    Zapis('keydown', 'up', '0');
    VK_DOWN:  Zapis('keydown', 'down', '0');
  end;
  end;
end;
No to samozrejme funguje len v ramci Form1.

Takze som si nasiel:

Kód: Vybrať všetko

if GetKeyState(VK_UP) and 128=128 then
begin
  Zapis('keydown', 'up', '0');
end;
Len je tu problem, ze potrebujem zachytit aj KeyUp aj KeyDown. S GeyKeyState to neviem dokazat, da sa to nejako? Alebo sa to robi inak?

Takisto by som to potreboval pre mysku, aby to fungovalo mimo Form1, aby som si vedel zapamatat TPoint pozicii mysky, a to mi staci len na kliknutie (netreba keydown, keyup mysky).

A potom mam otazku aky je rozdiel mezdi GetKeyState a GetAsyncKeyState? Diki za odpovede.
BTW ak mate takyto program, ktory zaznamenava klavesy a mysku, ulozi to do suboru a potom to vie zopakovat, tak mi ulahcite pracu kodenim :)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

kliknutie myšky si odchitíš pomocou mouse hooku, viac tu: http://delphigeek.blogspot.com/2007/02/ ... elphi.html a s tými klávesmi nejak nechápem ako ti to môže odchytávať aj mimo formu (kde to voláš?) a celkovo neviem o čo ti vlastne ide.. ak to funguje, čo ti bráni dať tam aj druhú podmienku na down tak ako máš up?
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Diki tu mysku si pozriem.

Ked pouzivam Form1.keyup, keydown funguje to iba v ramci Formulara1 (cize mimo neho neviem odchytavat keydown a keyup). Chapes?

Ked pouzijem GetKeyState, to mozem pouzit hocikde aj do timera, hocikde. Ale tym si neviem zistit ci je keydown alebo keyup. Tym viem zistit iba ci je zatlacene konkretne nejake tlacitko aj mimo Form1, v inej aplikacii.

Cize ked to zhrniem, mimo formulara1 neviem odchytit keydown a keyup, iba v nom. Snad ma uz chapes.
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Mimo formulára myslíš, že to nevieš zistiť v iných oknách tej aplikácie, alebo to nevieš zistiť pre iné aplikácie?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

ja to chápem tak, že keď má napriklad okno minimalizované a píše vo worde tak to neodchytáva.
DomCZo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 235
Registrovaný: 16 okt 2006, 22:49

Príspevok od používateľa DomCZo »

Ano, snazim sa zaznamenat napriklad pohyb v jednej nemenovanej hre, nieco taketo:

Kód: Vybrať všetko

0|keydown|up
100|keyup|up
8420|keydown|up
12430|keyup|up
16430|keydown|down
22430|keyup|down
Napísať odpoveď