AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Keyboard Hook Key auslesen

Ein Thema von SyntaxXx · begonnen am 5. Jul 2013 · letzter Beitrag vom 10. Jul 2013
Antwort Antwort
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#1

Keyboard Hook Key auslesen

  Alt 5. Jul 2013, 20:55
Guten Abend zusammen,
und zwar beschäftige ich mich zur Zeit mit Hooks.
Ich weiß, dass das ein brisantes Thema ist, aber dennoch möchte ich ein wenig mehr darüber erfahren.

Und zwar habe ich mir dazu ein Tutorial von eurer "Rivalen"-Seite Delphi-Treff angesehen.

Link: Klick mich


Ich habe mich an das gehalten, was dort geschrieben steht, nur was mir nicht einleuchtet ist, wie ich den exakten Key abfangen kann.
Ich habe es zwar geschaft, dass ich eine Ausgabe bekomme, wenn eine Taste gedrückt wird, aber nicht genau welche.

Vielleicht hättet ihr die Güte, mich da ein wenig mehr drüber aufzuklären.


Achso, mich würde auch noch interessieren, was die Funktion "InstallHook" für einen Parameter erwartet.
Ich übergebe hier eine 0, was bei einem Fensterhandle ja das eigene Fester bedeuten würde.



Über eine Antwort würde ich mich freuen.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Keyboard Hook Key auslesen

  Alt 5. Jul 2013, 21:32
Mit dem Parameter merkt er sich ein Fensterhandle. Wird allerdings gar nicht benutzt. In der Hook-Prozedur bekommst Du im WPARAM einen Tastencode und in LPARAM Flags. Siehe hier.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#3

AW: Keyboard Hook Key auslesen

  Alt 5. Jul 2013, 22:15
Ahhhh ok, erst einmal danke dafür.
Aber wenn ich das richtig sehe, bekomme ich also von "wParam" eine Hex Code.
Doch Delphi zeigt mir an, das es sich bei "wParam" um einen "NativeInt" handelt.

Jetzt frage ich mich natürlich, wie das zusammen past.
Oder gibt es noch eine API Funktion, die mir unbekannt ist, womit ich aus den beiden Parametern was für mich brauchbares bekomme?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Keyboard Hook Key auslesen

  Alt 5. Jul 2013, 22:33
Hier mal ein Beispiel aus der Praxis:
Delphi-Quellcode:
function KeyboardHookProc(Code: Integer; WordParam: WParam; LongParam: LParam): LongInt; stdcall;
begin
  if (Screen.ActiveControl is TcxGridSite) and
     (WordParam in [VK_DOWN, VK_UP, VK_LEFT, VK_RIGHT]) then
  begin
    if ((LongParam and (1 shl 31)) = 0) then // Bit 31 in LParam zeigt 0:Pressed 1:Released
      Screen.ActiveControl.Perform(WM_KEYDOWN, WordParam, LOngParam);
    exit;
  end;
  Result := CallNextHookEx(KBHook, Code, WordParam, LongParam);
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Keyboard Hook Key auslesen

  Alt 5. Jul 2013, 23:21
Aber wenn ich das richtig sehe, bekomme ich also von "wParam" eine Hex Code.
Doch Delphi zeigt mir an, das es sich bei "wParam" um einen "NativeInt" handelt.
Wat?
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Keyboard Hook Key auslesen

  Alt 6. Jul 2013, 00:05
Man bekommt nie niemals nicht (international never ever) einen Hexcode innerhalb eines Computersystems geliefert.

Streng genommen bekommt man nur 0 und 1 geliefert (also Binärcode), aber den immer (PCs) Byteweise (8Bit).
Ja, anzeigen lassen kann man sich diese Bytes in Hex, Binär, Octal, Dezimal oder auch einem anderen Zahlensystem der freien Wahl.

Aber halt nur Anzeige, und das ist immer eine Interpretation der Daten.

100x an die Tafel schreiben und bis Montag auswendig lernen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Keyboard Hook Key auslesen

  Alt 6. Jul 2013, 00:23
[OT]
nie niemals nicht
Klasse ^^
[/OT]
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#8

AW: Keyboard Hook Key auslesen

  Alt 6. Jul 2013, 15:25
Zitat:
100x an die Tafel schreiben und bis Montag auswendig lernen
Wurde gemacht und unlöschbar gesichert ^^.

Ok, aber wenn ich das jetzt richtig verstehe, erwarte ich von "CallNextHookEx()" eine Zahlenkette (LRESULT).
Mit dieser sollte ich doch dann prüfen können, welche Taste gedrück wurde, indem ich z.B. prüfe, ob Decimal(Result) von CallNextHookEx = 97 (a) ist oder?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#9

AW: Keyboard Hook Key auslesen

  Alt 8. Jul 2013, 00:15
Wir sind hier nicht bei C++ wo ein L Präfix einen Unicode String kennzeichnet Es handelt sich bei LParam um einen 32-bit Integer. Siehe auch mein Beispiel.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
SyntaxXx

Registriert seit: 14. Dez 2008
328 Beiträge
 
Delphi XE4 Architect
 
#10

AW: Keyboard Hook Key auslesen

  Alt 10. Jul 2013, 22:21
Ich muss zugeben, das ich einen dummen Fehler gemacht habe ^^

messagebox(0, PChar(Hier ein Integer), 'Title'); Hier kommt natürlich nichts bei raus.
Als ich Testhaber aber folgendes gemacht habe, funktionierte es natürlich:

messagebox(0, PChar(IntToStr(Hier ein Integer)), 'Title');

Ich bedanke mich für die super Hilfe.
Ichs habs verstanden und es funktioniert ^^
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz