AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Globaler Tastaturhook für eine bestimmte Tastatur
Thema durchsuchen
Ansicht
Themen-Optionen

Globaler Tastaturhook für eine bestimmte Tastatur

Ein Thema von Exceeder · begonnen am 21. Sep 2022 · letzter Beitrag vom 23. Sep 2022
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

AW: Globaler Tastaturhook für eine bestimmte Tastatur

  Alt 22. Sep 2022, 14:01
Comport, da findest du ein oder zwei Komponenten im GetIt.

AsyncPro (wo ist das denn hin?)
TComPortDrv
nrComm Lib
TMS Async

Ansonsten funktionieren die uralten TComport-Componenten auch weiterhin. (nutzen wir hier selber sowas)
Und zu Feig könnte ich auch noch bissl was abgeben. (ist aber jetzt noch nicht so hübsch, dass ich es öffentlich bereitstellen würde)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (22. Sep 2022 um 21:30 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
984 Beiträge
 
Delphi 6 Professional
 
#2

AW: Globaler Tastaturhook für eine bestimmte Tastatur

  Alt 22. Sep 2022, 19:37
Hmm..

Wenn Du mit Tastatur-Geräten arbeiten willst, kannst Du mit RawInputDevices arbeiten.
Dann erhälst du WM_INPUT Messages und kannst auch mit GetRawInputDeviceInfo Informationen zum Gerät erhalten (z.B. den HIDName per RIDI_DEVICENAME).

Wenn Du dann jedoch Eingaben des Gerätes Blockieren möchtest, kommst Du nicht um einen LowLevel Keyborthook (SetWindowsHookEx(WH_KEYBOARD..)) in einer DLL herum. Darin kannst Du dann der KeyboardHookProc() als Result 1 zurückgeben, so dass diese Taste als Verarbeitet gilt.

Hatte sowas mal testweise gebastelt, ist aber schon was her und ich weiß nicht mehr wo das Testtool abgeblieben ist..
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
Exceeder

Registriert seit: 29. Mai 2006
24 Beiträge
 
#3

AW: Globaler Tastaturhook für eine bestimmte Tastatur

  Alt 23. Sep 2022, 09:21
Hallo,

stimmt, es gibt ja jetzt GetIt. Hab mit Turbo Pascal angefangen und lange Zeit in der alten Firma noch mit XE7 gearbeitet. Das hat sich noch nicht so in den Kopf gebrannt. Ich mache das im Moment eher als Hobby nebenbei und habe über diese Quelle gar nicht nachgedacht.

@HolgerX Für die Blockade einer Tastatureingabe benötigt man keine DLL. Das geht auch in jedem normalen Programm. Mein Code vom Eingangspost musst nur um ein Exit(1); ergänzt werden, dann sind keine Eingaben mehr möglich.

Ich schaue trotzdem mal, ob man mit der Methode GetRawInputDeviceInfo irgendwas erreichen kann. Wobei das eher so aussieht, als wenn man sich hier mit eher vorab Devices auflisten kann. Im Keydown bzw. Keyup Event steht dann ja leider keine Device ID zur Verfügung. Eventuell gibt es aber doch noch mehr Informationen. Ex, Ex2, Ex3 lässt grüßen. Mal gucken ob man TKeyboardLowLevelHookStruct also noch erweitern kann.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
984 Beiträge
 
Delphi 6 Professional
 
#4

AW: Globaler Tastaturhook für eine bestimmte Tastatur

  Alt 23. Sep 2022, 19:42
Hmm..

Hallo,

stimmt, es gibt ja jetzt GetIt. Hab mit Turbo Pascal angefangen und lange Zeit in der alten Firma noch mit XE7 gearbeitet. Das hat sich noch nicht so in den Kopf gebrannt. Ich mache das im Moment eher als Hobby nebenbei und habe über diese Quelle gar nicht nachgedacht.

@HolgerX Für die Blockade einer Tastatureingabe benötigt man keine DLL. Das geht auch in jedem normalen Programm. Mein Code vom Eingangspost musst nur um ein Exit(1); ergänzt werden, dann sind keine Eingaben mehr möglich.

Ich schaue trotzdem mal, ob man mit der Methode GetRawInputDeviceInfo irgendwas erreichen kann. Wobei das eher so aussieht, als wenn man sich hier mit eher vorab Devices auflisten kann. Im Keydown bzw. Keyup Event steht dann ja leider keine Device ID zur Verfügung. Eventuell gibt es aber doch noch mehr Informationen. Ex, Ex2, Ex3 lässt grüßen. Mal gucken ob man TKeyboardLowLevelHookStruct also noch erweitern kann.
Die DLL benötigst Du, wenn du 'Global', also auch für andere Applikationen die Tastatureingabe abfangen willst.
Auch bekommst Du hier mit deinem LowLevelHookStruct/SetWindowsHookEx keine DeviceInfos. Dies geht nur per RawInputDevices.

Mit GetRawInputDeviceInfo kannst Du innerhalb der WM_INPUT (nach RegisterRawInputDevices) arbeiten, da in der Message ein Handle enthalten ist, mit dem Du per GetRawInputData ein RAWINPUT mit RAWINPUTHEADER erhältst. Damit dann per GetRawInputDeviceInfo z.B. den HIDName holen und damit das Device identifizieren.

Mit Keydown bzw. Keyup kannst Du hier nichts anfangen....
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)

Geändert von HolgerX (23. Sep 2022 um 19:45 Uhr)
  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 10:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz