Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Simulierten Hotkey per WMHotKey abfangen? (https://www.delphipraxis.net/112204-simulierten-hotkey-per-wmhotkey-abfangen.html)

schwa226 23. Apr 2008 14:44

Re: Simulierten Hotkey per WMHotKey abfangen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Sinn der Sache ist:

bei meinem HTPC verwende ich Girder um die IR-Fernbedienung für die DVB-Software verwenden zu können.

Girder schickt dann die Signale per Shortcut an die DVB Software. Da die DVB Software aber noch nicht HD-DVD Tauglich ist brauche ich dazu z.B. PowerDVD um HD-DVDs abspielen zu können.

Hier ist nun das Problem, dass einige Tasten in der DVB-Software & PowerDVD gleich sind (z.B Up, Down, Left, Right...)

Ich will nun per Hook den Tastenbefehl abfangen und stattdessen an das Fenster im Vordergrund (hier halt PowerDVD) schicken.
Denn die DVB-Software macht z.B. bei Up/Down einen Kanalwechsel was während einer DVD-Wiedergabe ja sinnlos ist.

Anhang ist mal der komplette Source. Aus der default.remote werden die Shortcuts ausgelesen die abgefangen werden sollen.

Nun verfängt sich die DLL aber in einer Endlosschleife wenn ein Up/Down usw gedrückt wird.
Denn es wird ja das Up von Girder an die DVB-Software abgefangen und dann wird as Up an das Fenster im Vordergrund geschickt.

Ein Löschen der Shortcuts in der HandleHook Array hilft auch nichts...

schwa226 23. Apr 2008 21:18

Re: Simulierten Hotkey per WMHotKey abfangen?
 
Yes!!

Zur Info: Habe nun den SetWindowsHookEx auf die ThreadID der DVB-Software beschränkt! Nun schauts schon besser aus!
Jetzt reagiert der Hook nurmehr auf die Tasten, die zu diesem Handle geschickt werden und das ist ja mein Sinn der Sache!
Leider scheint es aber derzeit das nur einzelne Tasten die von Girder geschickt werden erkannt werden :(

Kombinationen wie z.B. SHIFT+E wird nicht erkannt. Wenn ich aber auf der Tastatur SHIFT+E drücke werden sie schon erkannt...
Keine Ahnung warum das jetzt bei Girder anders ist...

Jedoch habe ich noch festgestellt, dass manchmal (aber nicht jedesmal) beim keybd_event die Funktion 2 mal ausgeführt wird. Speziell wenn ich ein VK_UP, VKDOWN, VK_RIGHT oder VK_LEFT schicke. Wie kann man das noch vorbeugen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 Uhr.
Seite 2 von 2     12   

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