AFX/MFC 拦截所有命令消息

Posted

技术标签:

【中文标题】AFX/MFC 拦截所有命令消息【英文标题】:AFX/MFC Intercept ALL command messages 【发布时间】:2014-04-21 22:39:51 【问题描述】:

我正在尝试使用 CMFCCmdUsageCounter 来跟踪我的程序中的命令使用情况。这个类需要我调用 AddCmd(ID_COMMAND);每次处理/发送 ID_COMMAND。

由于我的程序有数千个 ID_COMMAND,它们在数百万行代码中处理...这似乎不可行。

我希望有一些简单的方法可以拦截在我的程序中发送的所有命令。是否可以覆盖 SendMessage()/PostMessage() 函数?(甚至不确定这会获取所有命令)也许有一些 MFC 函数通过我的虚拟函数传递每个命令,然后像往常一样传递它。

很抱歉,我对 MFC/AFX 消息的理解有限。欢迎在尝试跟踪 ID_COMMAND 使用方面提供任何帮助。

【问题讨论】:

【参考方案1】:

看看SetWidowsHookEx。特别是,我将从 WH_GETMESSAGE 类型的钩子开始。钩子的组合可能会满足您的需求。

【讨论】:

以上是关于AFX/MFC 拦截所有命令消息的主要内容,如果未能解决你的问题,请参考以下文章

骆驼拦截/元帅jms回复

C# 重写WndProc 拦截 发送 系统消息 + windows消息常量值

[转]易语言消息机制分析(消息拦截原理)

如何拦截发送到窗口的消息?

Windows消息拦截技术的应用

开发openfire 消息拦截器插件PacketInterceptor