AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Können KeyHooks Tastenkombinationen ermitteln?
Thema durchsuchen
Ansicht
Themen-Optionen

Können KeyHooks Tastenkombinationen ermitteln?

Ein Thema von Alallart · begonnen am 18. Nov 2023 · letzter Beitrag vom 21. Nov 2023
Antwort Antwort
Alallart

Registriert seit: 8. Dez 2015
155 Beiträge
 
#1

Können KeyHooks Tastenkombinationen ermitteln?

  Alt 18. Nov 2023, 11:46
Ich beschäftige mich gerade mit mit KeyHooks, um ein Tool zu schreiben, das mir die gerade gedrückten Tasten anzeigt. Soweit, so gut. Nur bekomme ich dabei immer nur die letzte Taste angezeigt, die gedrückt wird. Möchte ich erfassen ob STRG+ALT+ENTF gedrückt wird, bekomme ich die Rückgabewerte STRG, dann ALT, dann ENTF. Ich weiß also zu der Zeit, dass die ENTF Taste gedrückt wird, aber nicht, dass es eine Tastenkombination ist.

Bevor ich also weiter mache, würde ich gerne wissen ob ich auf dem Holzweg bin. Kann man das damit ermitteln, und ich habe nur den falschen Weg gewählt, oder geht es überhaupt nicht? Denn einzelne Tasten bringen mir wenig.
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
701 Beiträge
 
Delphi 12 Athens
 
#2

AW: Können KeyHooks Tastenkombinationen ermitteln?

  Alt 18. Nov 2023, 12:32
Ich beschäftige mich gerade mit mit KeyHooks, um ein Tool zu schreiben, das mir die gerade gedrückten Tasten anzeigt. Soweit, so gut. Nur bekomme ich dabei immer nur die letzte Taste angezeigt, die gedrückt wird. Möchte ich erfassen ob STRG+ALT+ENTF gedrückt wird, bekomme ich die Rückgabewerte STRG, dann ALT, dann ENTF. Ich weiß also zu der Zeit, dass die ENTF Taste gedrückt wird, aber nicht, dass es eine Tastenkombination ist.

Bevor ich also weiter mache, würde ich gerne wissen ob ich auf dem Holzweg bin. Kann man das damit ermitteln, und ich habe nur den falschen Weg gewählt, oder geht es überhaupt nicht? Denn einzelne Tasten bringen mir wenig.
Siehe GetKeyboardState (API). Du brauchst keinen Hook dafür, frag einfach so alle 100 msecs den Tastaturstatus ab.
Peter Below
  Mit Zitat antworten Zitat
rabatscher

Registriert seit: 13. Dez 2007
Ort: Bruck an der Mur
69 Beiträge
 
#3

AW: Können KeyHooks Tastenkombinationen ermitteln?

  Alt 19. Nov 2023, 11:43
Soweit ich weiss ist strg alt entf entwas speziell - es wird sogar ein hardware interrupt erzeugt (zumindest war das mal so..)
eventuell hilft das weiter:

https://stackoverflow.com/questions/...een-is-visible
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Können KeyHooks Tastenkombinationen ermitteln?

  Alt 19. Nov 2023, 14:09
Du bekommst das Drücken und Loslassen der Tasten einzeln. Im letzten Bit der Flags steht drin, ob die Taste gedrückt oder losgelassen wurde. Du weißt also, wenn noch Tasten gedrückt sind, wenn du dir das merkst.

Siehe GetKeyboardState (API). Du brauchst keinen Hook dafür, frag einfach so alle 100 msecs den Tastaturstatus ab.
Ein Hook ist aber sinnvoller und einfacher, weil man den Tastendruck direkt mitbekommt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#5

AW: Können KeyHooks Tastenkombinationen ermitteln?

  Alt 19. Nov 2023, 15:03
@peterbelow:
Ja, GetKeyboardState und Co. geben zwei Ergebnisse.
* welche Taste/Tasten sind gerade jetzt, ähhh zum Beginn des Message-Events gedrückt gewesen (GetAsynchKeyboardState was wirklich gerade jetzt ist)
* welche Tasten waren seit der letzten Abfrage gewesen

- über einen Timer das "gerade jetzt", kann kürzere Tastendrücke übersehen
- und beim "war gedrückt", ist nicht bekannt, in welcher Reihenfolge das passiert war

- GetKeyboardState ist normal "netter", da es auch beim Debuggen den richtigen Wert liefert
- während GetAsynchKeyboardState für Schleifen (also mehrmals in einem Event oder z.B. in einer Konsolenanwendung)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
155 Beiträge
 
#6

AW: Können KeyHooks Tastenkombinationen ermitteln?

  Alt 19. Nov 2023, 22:38
Du bekommst das Drücken und Loslassen der Tasten einzeln. Im letzten Bit der Flags steht drin, ob die Taste gedrückt oder losgelassen wurde. Du weißt also, wenn noch Tasten gedrückt sind, wenn du dir das merkst.
Jetzt, wo du es sagst, stimmt. Ich könnte bei STRG+ALT+ENTF drauf achten, ob die STRG-Taste losgelassen wurde, bevor die nähste Taste gedrückt wurde. Insoweit hilft mir das kleinwenig. Was ich aber dann doch nicht mitbekomme ist, dass wenn ich nach STRG die ALT-Taste drücke, ich bei der gedrückten ALT-Taste die STRG-Taste loslasse. Das bekomme ich nicht mit.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#7

AW: Können KeyHooks Tastenkombinationen ermitteln?

  Alt 19. Nov 2023, 23:41
Entweder du merkst dir den Status.
Beim Drücken und Loslassen einer Taste wird gespeichert, ob sie gesetzt ist. (Enum, BitSet oder Booleans)

Außerdem lässt sich der Status dieser Tasten doch jederzeit abfragen. (Strg, Alt, Shift/CapsLock, Print, Rollen, NumLock)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (20. Nov 2023 um 09:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Können KeyHooks Tastenkombinationen ermitteln?

  Alt 20. Nov 2023, 08:03
Jetzt, wo du es sagst, stimmt. Ich könnte bei STRG+ALT+ENTF drauf achten, ob die STRG-Taste losgelassen wurde, bevor die nähste Taste gedrückt wurde. Insoweit hilft mir das kleinwenig. Was ich aber dann doch nicht mitbekomme ist, dass wenn ich nach STRG die ALT-Taste drücke, ich bei der gedrückten ALT-Taste die STRG-Taste loslasse. Das bekomme ich nicht mit.
Wo ist das Problem?
Die Reihenfolge ist doch dann:
Strg down
Alt down
Strg up

In dem Moment weißt du also, dass nur noch Alt gedrückt ist.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
155 Beiträge
 
#9

AW: Können KeyHooks Tastenkombinationen ermitteln?

  Alt 21. Nov 2023, 18:53
@jaenicke

Tatsächlich, das ist mir gar nicht aufgefallen. Wohl, weil es so schnell geht. Wird STRG-Taste gedrückt, dann ALT-Taste, und wird dann STRG-Taste losgelassen, während die ALT-Taste noch gedrückt wird, kommt tatsächlich kurz die Info (bzw. Bitänderung), dass die STRG-Taste losgelassen wurde.

Da das aber ganz kurz ist, habe ich es nicht bemerkt.

Danke.
  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 23:39 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