如果发送者未处于焦点且不知道目标窗口,则模拟键盘事件[重复]

2024-01-03

我正在尝试创建一个媒体播放器控制器,该控制器在后台运行时工作,并且不知道是否有任何接收器,就像按键盘上的某个键一样next track媒体键。

我尝试过使用keybd_event, SendInput or http://inputsimulator.codeplex.com/ http://inputsimulator.codeplex.com/但只有 wsender 窗口处于焦点。

有没有办法模拟键盘按下VK_MEDIA_NEXT_TRACK没有使发件人窗口处于焦点状态?


这是一个lot实施起来比您想象的要容易。这些键盘按键很特殊,它们不产生击键。生成一个WM_APPCOMMAND 消息 http://msdn.microsoft.com/en-us/library/windows/desktop/ms646275%28v=vs.85%29.aspx反而。 “下一曲目”键的命令是 APPCOMMAND_MEDIA_NEXTTRACK,您可以从 MSDN 库文章中得知。

该消息被发送到任何恰好位于前台的窗口。它几乎从不对它做任何事情,而是将它传递给默认的窗口过程。这就是它的意义所在,它被转换成一个 shell 命令,以允许 shell 钩子看到它。如果未自定义,则资源管理器将选择它。

所以你所要做的就是发送一个 WM_APPCOMMAND 到你自己的窗户。可以隐藏,没问题。一个小小的 Winforms 应用程序就可以完成工作,您只需要一个 pinvoke 声明发信息() http://www.pinvoke.net/default.aspx/user32/SendMessage.html。 WM_APPCOMMAND 的消息号为 0x319。一个完整的例子is here https://stackoverflow.com/a/21504831/17034.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果发送者未处于焦点且不知道目标窗口,则模拟键盘事件[重复] 的相关文章