C#中的全局媒体键钩子

5

通过以下的RegisterHotKey函数,我能够全局钩取普通的按键组合:

[DllImport("user32.dll")]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk);

这是一篇关于IT技术的优秀文章,完整的源代码在此处:http://www.liensberger.it/web/blog/?p=207

但问题是,我如何挂钩媒体键、那些在键盘和电脑遥控器中找到的播放/暂停/下一首/上一首键?我尝试了很多谷歌搜索,但没有任何结果。

1个回答

3

使用System.Windows.Forms.Keys.MediaPlayPauseSystem.Windows.Forms.Keys.Play等值作为vk参数的值(在将其转换为uint后),并将0用于fsModifiers(除非您想要注册Shift-Play、Alt-Play或其他键组合)。


我尝试过,但它不能与我的键盘(Logitech Illuminated Keyboard K740)一起使用。媒体键在其他媒体应用程序中正常工作,但不适用于C# System.Windows.Forms.Keys.Media*。任何普通的KeyEvent也没有运气,C#只是无法识别我的媒体键。我处理媒体键的唯一方法是覆盖WndProc,并检查WM_APPCOMMAND,但这样我就无法获得全局热键。还有其他想法吗? - darx

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