<分区>
我正在编写一个简单的音乐播放器。我希望它 Hook 全局 WM_APPCOMMAND
消息(APPCOMMAND_MEDIA_PLAY
、APPCOMMAND_MEDIA_PAUSE
、APPCOMMAND_MEDIA_NEXTTRACK
,...)。
你能帮我怎么做吗?非常感谢!
<分区>
我正在编写一个简单的音乐播放器。我希望它 Hook 全局 WM_APPCOMMAND
消息(APPCOMMAND_MEDIA_PLAY
、APPCOMMAND_MEDIA_PAUSE
、APPCOMMAND_MEDIA_NEXTTRACK
,...)。
你能帮我怎么做吗?非常感谢!
最佳答案
这需要一个 WH_SHELL Hook ,由 SetWindowsHookEx() 设置。钩子(Hook)回调将获得 HSHELL_APPCOMMAND notification .
这个钩子(Hook)需要一个可以注入(inject)所有运行进程的 DLL。您不能使用 C# 等托管语言编写此类 DLL,您将尝试注入(inject)的进程不会加载 CLR。需要非托管代码,C 是典型的选择。 This project应该有助于让这样的 DLL 运行。请注意 64 位操作系统上的相当大的复杂性,您将需要两个帮助程序,以便您可以注入(inject) 32 位和 64 位进程。
关于c# - 如何 Hook 全局 WM_APPCOMMAND 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14087873/
相关文章:
C# 公共(public)接口(interface)与接口(interface)
c# - WCF 服务 web.config 调整以更改生成的 wdl
Git post-receive hook 更新不同用户拥有的本地克隆
javascript - 是否可以将 beforeEach 和 afterEach Cypress Hook 组合成自定义命令?
java - RabbitMQ HelloWorld 消息在本地主机上被阻止?
c# - C# 有类似于 C++ std::equal_range 的东西吗?
c# - 在 EXE 安装后保持提升的权限并在重启期间自动启动?