Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Multimedia-Tasten hooken (https://www.delphipraxis.net/63299-multimedia-tasten-hooken.html)

Gausi 13. Sep 2006 14:30

Re: Multimedia-Tasten hooken
 
KeyDown kann auch nichts bringen, weil diese Tasten keine Tasten im üblichen Sinne sind. Sie lösen kein Tastatur-Event aus, sondern das Senden einer WM_APPCOMMAND-Message. An die ganzen Konstanten kann man z.B. so gelangen
Delphi-Quellcode:
procedure MediaKey (Var aMSG: tMessage); message WM_APPCOMMAND;    
//[...]    
procedure TForm1.MediaKey (Var aMSG: tMessage);    
begin    
  Showmessage(InttoStr(aMSG.LParam));
  aMsg.Result := 1;
end;
Man erhält dann, nach entsprechender Konvertierung ins Hex-Format:
Delphi-Quellcode:
APPCOMMAND_VOLUME_MUTE = $80000;    
APPCOMMAND_VOLUME_DOWN = $90000;    
APPCOMMAND_VOLUME_UP  = $a0000;
Alternativ kann man auch nach den Konstanten-Namen googeln. Irgendwo findet man immer ne Liste damit ;-)

negaH 13. Sep 2006 15:01

Re: Multimedia-Tasten hooken
 
Sag mal du hookst die Tastatur-Events ?

Ich meine du müsstest bei wm_AppCommand die Fensterfunktion global hooken und nicht das Keyboard.

Gruß Hagen

Gausi 13. Sep 2006 15:53

Re: Multimedia-Tasten hooken
 
Ne, ich mach schon nen ShellHook auf WM_APPCOMMAND (vgl. Quellcode im ersten Posting). Funktioniert ja auch soweit, nur kommt der Hook mit installiertem iTouch durcheinander (iTouch scheint die Messages irgendwie mehrfach zu versenden, die dann alle vom Hook auf meine Anwendung umgelenkt werden). Daher dieser Workaround.

Mein Problem ist mittlerweile gelöst, nur wurde hier noch eine Frage bzgl. der anderen Konstanten gefragt. Ob das wirklich hierhin gehört, oder abgetrennt werden sollte, mag ein anderer entscheiden ;-)

Der_Ventilator 14. Sep 2006 17:39

Re: Multimedia-Tasten hooken
 
Danke für die Info.
Aber ich habe ein Problem mit deinem Code (5. Zeile):

Delphi-Quellcode:
HookHandle := SetWindowsHookEx(WH_SHELL, @KeyboardHookProc, HInstance, 0);
Delphi meckert, es brauche bei @KeyboardHookProc Parameter. Welche soll ich da angeben?

Des weiteren vermute ich, dass man HookHandle mit 0 initialisieren muss. Richtig?

Und bei InstallHook ist der Parameter hwnd = Application.Handle? Beim FormCreate ausführen?

lbccaleb 26. Jun 2007 19:45

Re: Multimedia-Tasten hooken
 
ich muss das nochaml rauskramen von vor jahren :roll:


ich hab das alles probiert, aber es hilft nichts, nix klappt...
ich glaub bei den toshiba notebooks (ich brauch das ja für mein notebook, das multimedia tasten drauf hat) funktioniert das nur über bibliotheken!!??

weiß einer rat wie ich die ansprechen kann??

zuständig müsste dafür tfncky.exe (toshiba controls) sein!!! es reagiert definitiv nicht auf app_command, und auch nicht auf die dierekten messages für die jeweiligen tasten...

ich komm einfach nicht weiter... :cry:

Gausi 26. Jun 2007 20:39

Re: Multimedia-Tasten hooken
 
Ich komme bei dem Thema mehr und mehr zu der Ansicht, dass hier jede Hersteller von Tastaturen/Treibern sich da ein eigenes Süppchen zusammenkocht. Bei meiner alten Logitech-Tastatur klappen die Multimediatasten gut ohne Hook im eigenen Programm, auf meinem Thinkpad brauche ich den Hook dafür. Bei der Logitech-Software für die neuen Tastaturen gibts komische Probleme, die ich noch nicht genau verstanden habe. Wie das jetzt bei Toshiba aussieht, weiß ich nicht.

Eine ultimative Lösung dafür scheint es nicht zu geben.

lbccaleb 26. Jun 2007 20:44

Re: Multimedia-Tasten hooken
 
ja aber das bei toshiba muss ich sagen sieht echt schlimm aus, ich hab kein plan wie die das übermitteln mit den funktionen, oder die haben noch komplett andere messages die ich noch gar nicht erkannt hab... das ist zum mäuse melken, naja hab sie erstmal angeschrieben ob sie dafür nicht ne sdk haben, für das toshiba controls programm

c113plpbr 30. Jun 2007 00:43

Re: Multimedia-Tasten hooken
 
Zitat:

Zitat von lbccaleb
ja aber das bei toshiba muss ich sagen sieht echt schlimm aus, ich hab kein plan wie die das übermitteln mit den funktionen, oder die haben noch komplett andere messages die ich noch gar nicht erkannt hab... das ist zum mäuse melken, naja hab sie erstmal angeschrieben ob sie dafür nicht ne sdk haben, für das toshiba controls programm

Habt ihr euch schonmal überlegt, dass es über direkten Zugriff auf die Tastatur als HID-Device laufen könnte? Hatte sowas nämlich mit meiner G15 (von Logitech). In dem Fall führt eure suche wohl eher in den CreateFile & ReadFile bereich ... einfach mal mit SysInternals Process Explorer reinguggen, nach offenen device-handles, was des toshiba-programm so offen hat, dann mal evtl. nen handle schliessen, und schauen ob die tasten immernoch gehen ;)

mfg,
Philipp


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