Entwickler-Ecke
Windows API - GetAsnycKeyState Problem
matze - So 07.09.08 10:25
Titel: GetAsnycKeyState Problem
Hallo.
Ich habe ein Problem:
Ich habe im Forum den folgenden Code gefunden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure keylogger; var i: integer; begin while true do begin for i := 10 to 200 do if boolean(getasynckeystate(i)) then form1.memo1.lines.Text := form1.Memo1.lines.Text + char(i); sleep(10); end; end; procedure TForm1.FormCreate(Sender: TObject); var tid: cardinal; begin createthread(0,0,@keylogger,nil,0,tid); end; |
und zwar hier:
http://www.delphi-forum.de/viewtopic.php?p=519810#519810
Ich möchte also mit getasynckeystate Tasten abfragen. Ich will diesen Code nicht eins zu eins übernehmen, aber ich benutze ihn um ein bisschen zu experimentieren. Dabei ist mir aufgefallen, dass ich damit nicht herausbekomme, ob der Buchstabe gerade groß oder klein geschrieben wurde.
Wie kann ich denn das herausbekommen?
Danke,
Matze
matze - So 07.09.08 10:41
ok klar.
Nur leider wird nur einmal übermittelt, wenn SHIFT gedrückt wird. Wenn der Benutzer also mehrere GROSSbuchstaben hintereinander eingibt, dann geht es wieder nicht.
Xion - So 07.09.08 10:47
wie ich sehe, scheint das wie bei CapsLock über GetKeyBoardState zu funktionieren (
Quelle [
http://www.delphi-forum.de/viewtopic.php?t=52078&highlight=shiftstate])
Edit:
| Delphi-Hilfe hat folgendes geschrieben: |
| You can use the virtual-key code constants VK_SHIFT, VK_CONTROL, and VK_MENU as values for the vKey parameter. This gives the state of the SHIFT, CTRL, or ALT keys without distinguishing between left and right. |
Edit2:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Timer1Timer(Sender: TObject); var C: String; A: integer; begin for A:= 65 to 122 do if bool(GetAsyncKeyState(A)) then begin C:=chr(A); if not bool(GetAsyncKeyState(VK_Shift)) then C:=AnsiLowerCase(C); LabeledEdit1.Text:=LabeledEdit1.Text+C; end; end; |
so gehts ganz gut
matze - So 07.09.08 11:21
Hey Danke!
Das klappt.
Warum bin ich da nicht drauf gekommen? Hach. Ich werd alt...
Danke nochmals an alle!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!