C#:键盘钩

我不知道这个问题有更好的标题,但我会说明我的问题。

我正在开发类似MP3播放器的应用程序,它使用多媒体键播放/暂停,停止播放歌曲,我实际上使它工作但是FormApplication必须在顶部[聚焦]

protected override void WndProc(ref Message msg) { if (msg.Msg == 0x319) // WM_APPCOMMAND message { // extract cmd from LPARAM (as GET_APPCOMMAND_LPARAM macro does) int cmd = (int)((uint)msg.LParam >> 16 & ~0xf000); switch (cmd) { case 13: // APPCOMMAND_MEDIA_STOP constant MessageBox.Show("Stop"); break; case 14: // APPCOMMAND_MEDIA_PLAY_PAUSE MessageBox.Show("Play/Pause"); break; case 11: // APPCOMMAND_MEDIA_NEXTTRACK MessageBox.Show("Next"); break; case 12: // APPCOMMAND_MEDIA_PREVIOUSTRACK MessageBox.Show("Previous"); break; default: break; } } base.WndProc(ref msg); } private void Form1_KeyPress(object sender, KeyPressEventArgs e) { Message m = new Message(); m.Msg = e.KeyChar; WndProc(ref m); } 

所以我需要做的是:即使程序在后台并且不在顶部或聚焦,使多媒体键工作,就像winamp和Windows Media Player的工作方式一样。

我在互联网上搜索了很多,但大多数给了我类似于我正在使用的方式。

非常感谢您的帮助。