如何钩取全局的WM_APPCOMMAND消息?

3

我正在编写一个简单的音乐播放器。我希望能够捕获全局的WM_APPCOMMAND消息(APPCOMMAND_MEDIA_PLAY, APPCOMMAND_MEDIA_PAUSE, APPCOMMAND_MEDIA_NEXTTRACK等)。
你能告诉我如何做到这一点吗? 非常感谢!


我尝试使用protected override void WndProc(ref Message m),但它无法挂钩全局消息:( 我也不想使用键盘钩子,因为我正在使用全局钩子应用程序,并使用它向Windows发送WM_APPCOMMAND - Thanh Nguyen
1个回答

4

这需要一个WH_SHELL钩子,由SetWindowsHookEx()设置。 钩子回调将获得HSHELL_APPCOMMAND通知。

此钩子需要一个可以注入到所有运行进程中的DLL。您无法在像C#这样的托管语言中编写此类DLL,因为您尝试注入的进程将没有加载CLR。需要非托管代码,C是典型的选择。 这个项目应该有助于启动这样的DLL。 请注意,在64位操作系统上存在相当复杂的问题,您需要两个辅助程序,以便您可以注入32位和64位进程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接