Delphi-PRAXiS

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 Hook funktioniert PRINZIPIELL nicht (https://www.delphipraxis.net/114949-multimedia-tasten-hook-funktioniert-prinzipiell-nicht.html)

64Jabor 3. Jun 2008 11:06


Multimedia-Tasten Hook funktioniert PRINZIPIELL nicht
 
Hallo DP,

leider scheitere ich immer wieder daran die Sondertasten für Multimedia zu hooken!
Bei allen anderen Tasten funktioniert mein DLL-Hook global und einwandfrei per virtuellen Tastencodes.
Bei den Multimedia-Tasten habe ich auf Konstanten aus der DP gesetzt:

Delphi-Quellcode:
const
   APPCOMMAND_MEDIA_NEXTTRACK     = $B0000;
   APPCOMMAND_MEDIA_PREVIOUSTRACK = $C0000;
   APPCOMMAND_MEDIA_STOP          = $D0000;
   APPCOMMAND_MEDIA_PLAY_PAUSE    = $E0000;
   APPCOMMAND_VOLUME_MUTE         = $80000;
   APPCOMMAND_VOLUME_DOWN         = $90000;
   APPCOMMAND_VOLUME_UP           = $a0000;
Nur leider kommt anscheinend nicht bei meinem Hook an.
Ein mir bekanntes Problem ist, dass der Tastendruck mehrmal ankommt - dank iTouch etc, aber GAR NICHT?

Meine HookProc:

Delphi-Quellcode:
Result := CallNextHookEx(HookHandle, nCode, wParam, lParam);
KeyUp := ((lParam and (1 shl 31)) <> 0);
  case nCode < 0 of
    TRUE: exit;
    FALSE:
      begin
       if not KeyUp then
        begin
         case wParam of
          APPCOMMAND_MEDIA_NEXTTRACK: MessageBox(WindowHandle, 'Ret', 'Info', MB_OK);
         end;
        end;
      end;
  end;
WindowHandle ist hier das übergebende Fenster-Handle...

Sieht jemand das Problem?

Schonmal danke,
mfg 64Jabor

toms 22. Jun 2008 08:36

Re: Multimedia-Tasten Hook funktioniert PRINZIPIELL nicht
 
Hallo, konntest du das Problem schon lösen?

Gausi 22. Jun 2008 10:15

Re: Multimedia-Tasten Hook funktioniert PRINZIPIELL nicht
 
Für die Multimediatasten braucht man keinen Key-Hook, sondern einen Shell-Hook (WH_SHELL).

1234588 22. Jun 2008 10:43

Re: Multimedia-Tasten Hook funktioniert PRINZIPIELL nicht
 
wird die APPCOMMAND_MEDIA_NEXTTRACK message nicht ueber die WM_APPCOMMAND message uebertragen?

Delphi-Quellcode:
if uMsg = WM_APPCOMMAND then
  case wParam of
    APPCOMMAND_MEDIA_NEXTTRACK:;
    APPCOMMAND_MEDIA_PREVIOUSTRACK:;
    APPCOMMAND_MEDIA_STOP:;
    //usw.
  end;

Gausi 22. Jun 2008 10:59

Re: Multimedia-Tasten Hook funktioniert PRINZIPIELL nicht
 
Jupp, und genau deswegen bringt ein Keyboard-Hook hier auch nichts, sondern nur der Shellhook. :-D

64Jabor 22. Jun 2008 12:29

Re: Multimedia-Tasten Hook funktioniert PRINZIPIELL nicht
 
Achso, ok, was genau ist der Unterschied?
Der KeyHook fängt Tastendrücke ab, der Shell Systemnachrichten oder wie?

toms 22. Jun 2008 21:05

Re: Multimedia-Tasten Hook funktioniert PRINZIPIELL nicht
 
Hallo

In der msdn findest du Infos zu den Hook Typen.

Bemerkungen zu WM_APPCOMMAND Notification

Zitat:

If a child window does not process this message and instead calls DefWindowProc, DefWindowProc will send the message to its parent window. If a top level window does not process this message and instead calls DefWindowProc, DefWindowProc will call a shell hook with the hook code equal to HSHELL_APPCOMMAND.

Martin K 5. Jul 2008 15:18

Re: Multimedia-Tasten Hook funktioniert PRINZIPIELL nicht
 
Hallo, gibt es inzwischen eine Lösung, wie man die Multimedia-Tasten abfangen kann?
Habe nämlich genau das selbe Problem, siehe dieser Thread.
Wie funktioniert das denn mit dem Hook HSHELL_APPCOMMAND ???


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