c++;win32获取系统卷加速器 使用C++可以检测Win32中系统密钥加速器使用哪些密钥?例如:如果用户按fn+键向上(这也是更改系统音量的组合键),我想检测此事件并对其作出响应。

c++;win32获取系统卷加速器 使用C++可以检测Win32中系统密钥加速器使用哪些密钥?例如:如果用户按fn+键向上(这也是更改系统音量的组合键),我想检测此事件并对其作出响应。,c++,winapi,accelerator,C++,Winapi,Accelerator,我认为这通常不可能。fn密钥通常由BIOS-SMM-ACPI处理,这是用户程序无法访问的 也许,如果它被翻译成标准的多媒体音量增大键,你就可以得到它,但我不会打赌。。。 这由机器的BIOS处理。它产生一个击键、VK_VOLUME_DOWN或VK_VOLUME_UP虚拟键。对WM_KEYDOWN消息的DefWindowProc处理产生WM_APPCOMMAND、APPCOMMAND_VOLUME_UP/DOWN。DefWindowProc处理该消息会调整音量。询问OP如何检测导致系统音量变化的按键

我认为这通常不可能。fn密钥通常由BIOS-SMM-ACPI处理,这是用户程序无法访问的

也许,如果它被翻译成标准的多媒体音量增大键,你就可以得到它,但我不会打赌。。。
这由机器的BIOS处理。它产生一个击键、VK_VOLUME_DOWN或VK_VOLUME_UP虚拟键。对WM_KEYDOWN消息的DefWindowProc处理产生WM_APPCOMMAND、APPCOMMAND_VOLUME_UP/DOWN。DefWindowProc处理该消息会调整音量。

询问OP如何检测导致系统音量变化的按键,而不是如何修改系统音量。实际上,
DefWindowProc
处理该消息会将
WM_APPCOMMAND
转发给Explorer,Explorer会调整音量。如果您想覆盖应用程序中的音量按钮,请响应
WM\u APPCOMMAND
消息。@Raymond-您不是走得太快了吗?DefWindowProc在顶级窗口上处理WM_APPCOMMAND会调用shell钩子afaik。如果WM_KEYDOWN handling将WM_APPCOMMAND直接发送到资源管理器,则无法响应。是的,
WM_APPCOMMAND
通过shell挂钩发送到资源管理器。关键是,更改卷的是资源管理器,而不是
DefWindowProc
。这个区别对这个问题来说并不重要,但它会影响类似的问题。但是只有当应用程序有焦点时,才会发送消息WM_APPCOMMAND和WM_KEYDOWN。即使应用程序没有焦点,我如何检测这些键?与