c# - 如何 Hook 全局 WM_APPCOMMAND 消息?

标签 c# hook message global

<分区>

我正在编写一个简单的音乐播放器。我希望它 Hook 全局 WM_APPCOMMAND 消息(APPCOMMAND_MEDIA_PLAYAPPCOMMAND_MEDIA_PAUSEAPPCOMMAND_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 安装后保持提升的权限并在重启期间自动启动?

c++ - 如何在 C++ 中记录函数的堆栈返回地址

junit - 在 JUnit 5 中将 `Supplier` 作为消息提供者传递的选项的实际用途

mysql - ejabberd 16.06 + mysql 5.5.50,消息历史记录不保存