Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tastendruck überschreibbar? (https://www.delphipraxis.net/90012-tastendruck-ueberschreibbar.html)

Ack 10. Apr 2007 13:08


Tastendruck überschreibbar?
 
Weiß jemand wie und ob man überhaupt einen Tastendruck systemweit überschreiben kann?
So dass beispielsweise wenn die Taste A gedrückt wird, der Buchstabe B geschrieben wird.

Kann das wenn überhaupt auch mit einem Tastatur Hook gelöst werden?
Bisher war meine Suche nach einem Lösungsansatz leider erfolglos was ich mich fast vermuten lässt das es gar nicht möglich ist.

chaosben 10. Apr 2007 13:28

Re: Tastendruck überschreibbar?
 
Jo, das ist möglich. Man könnte die entsprechende Taste als globalen Hotkey (THotkeymanager) registrieren und als Antwort auf das Ereignis die enstprechende andere Taste virtuell (Sendkeys, keyb_event, ...) drücken.

Ack 10. Apr 2007 13:38

Re: Tastendruck überschreibbar?
 
Perfekt. Genau das was ich gesucht habe.
Vielen Dank :thumb:

SirThornberry 10. Apr 2007 14:03

Re: Tastendruck überschreibbar?
 
mit Hooks geht es übrigens auch.

ShihiZu 17. Jan 2008 18:44

Re: Tastendruck überschreibbar?
 
Ich greife das Thema auf, weil das hier der passendste Thread ist, den ich gefunden habe zu meinem Problem. Theoretisch habe ich dasselbe Problem wie der Threadersteller.
Ich möchte, dass wenn Taste A gedrückt wird, Taste B gesendet wird (als kleine Randnotiz: ich habe keine bösen Absichten, ich benötige es nur, weil ein Programm gewisse Tasten als Hotkeys nicht unterstützt, die ich verwenden muss).

Das mit dem Senden ist auch überhaupt kein Problem. Das mach ich mit keybd_event. Das Abfangen hingegen bereitet mir ein wenig Schwierigkeiten.
Durch Suchen habe ich zum einen die Möglichkeit gefunden, das Abfangen mit RegisterHotKey oder mit Hooks zu gestalten. Prinzipiell möchte ich für mein so simples Programmm auf Hooks verzichten. Das Problem an RegisterHotKey ist aber, dass ich es nicht hinbekomme, einen HotKey ohne SHIFT, ALT oder STRG zu definieren, denn ich möchte die Taste "ö" abfangen.
Ich habe versucht, es mit 0 anstatt MOD_CONTROL oder andere Werte versucht, was leider nicht klappt:
Delphi-Quellcode:
RegisterHotKey(Handle, HKoe, 0, VkKeyScan('ö'));
Geht das mit RegisterHotKey überhaupt, setz ich einfach was falsches ein? Bei der MSDN erhalte ich keine Hinweise darauf, falls ich keine der Modifiers verwenden möchte.
Wenn das mit RegisterHotKey nicht klappt, gibt es einen einfacheren Weg als Hooks, mein Problem zu lösen, oder muss ich mich wirklich in Hooks & DLL einarbeiten? :?

Gruss
Shi

sirius 17. Jan 2008 18:53

Re: Tastendruck überschreibbar?
 
Delphi-Quellcode:
Geht das mit RegisterHotKey überhaupt
Ja, Registerhotkey ist auch richtig aufgerufen.

ShihiZu 18. Jan 2008 16:40

Re: Tastendruck überschreibbar?
 
Problem gelöst, hatte bei der procedure-Deklaration von WMHotKey das message WM_HOTKEY; vergessen. Vielen Dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 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