我正在尝试创建一个媒体播放器控制器,它可以在后台运行时工作,而不知道是否有任何接收器,就像按下键盘上的键一样,如next track
媒体键。
我尝试过使用keybd_event
,SendInput
或http://inputsimulator.codeplex.com/,但只有wsender窗口才会成为焦点。
有没有办法模拟像VK_MEDIA_NEXT_TRACK
这样的键盘按下而没有关注发件人窗口?
答案 0 :(得分:2)
这比您想象的更容易实现 lot 。这些键盘键是特殊的,它们不会产生击键。而是生成WM_APPCOMMAND message。从MSDN库文章中可以看出,“下一曲目”键的命令是APPCOMMAND_MEDIA_NEXTTRACK。
该消息被发送到碰巧具有前景的任何窗口。它几乎从不对它做任何事情,而是将它传递给默认的窗口程序。这就是它生命的地方,它变成了一个shell命令,允许shell钩子看到它。如果没有自定义,那么资源管理器会把它拿起来。
所以你要做的就是将WM_APPCOMMAND发送到你自己的窗口。它可以隐藏,没问题。一个小的Winforms应用程序将完成工作,您只需要SendMessage()的pinvoke声明。 WM_APPCOMMAND是消息号0x319。