怎样阻止宿主程序处理某些特定的消息?

Cybergate 2010-09-01 11:04:03
我现在在做一个应用程序插件,希望能阻止宿主程序处理某些特定的消息(如WM_CAPTURECHANGE)。我目前能想到的就是Subclass该程序所有的窗口,但是代价有点太大。

我尝试过钩子,但是貌似钩子不能阻止窗口程序对消息的处理,也不能修改消息的内容。
...全文
111 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jameshooo 2010-09-01
  • 打赏
  • 举报
回复
100个窗口对于人来说觉得是一项繁重的工作,对于计算机来说都是同一段代码在处理,子类化100次难道很复杂?
Cybergate 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 jameshooo 的回复:]

子类化是最合适的方式了,谁说代价太大?
[/Quote]

如果这个程序有100个窗口,那么我就需要子类化100个窗口。
Cybergate 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dingshaofengbinbin 的回复:]

引用楼主 cybergate 的回复:
我现在在做一个应用程序插件,希望能阻止宿主程序处理某些特定的消息(如WM_CAPTURECHANGE)。我目前能想到的就是Subclass该程序所有的窗口,但是代价有点太大。

我尝试过钩子,但是貌似钩子不能阻止窗口程序对消息的处理,也不能修改消息的内容。

钩子就是截获消息的,决定的可以。
[/Quote]

请用代码说明,谢谢。
Cybergate 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 visualeleven 的回复:]

HOOK应该是可以的
[/Quote]

能具体说一下怎么实现Hook Procedure,让窗口过程不再处理这个消息吗?

在Hook Procedure里, 要么调用CallNextHookEx, 把消息传到其它钩子;要么直接返回,其它钩子就不会处理。 但是两种方式下,窗口程序都会处理这个消息的。
dingshaofengbinbin 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 cybergate 的回复:]
我现在在做一个应用程序插件,希望能阻止宿主程序处理某些特定的消息(如WM_CAPTURECHANGE)。我目前能想到的就是Subclass该程序所有的窗口,但是代价有点太大。

我尝试过钩子,但是貌似钩子不能阻止窗口程序对消息的处理,也不能修改消息的内容。
[/Quote]
钩子就是截获消息的,决定的可以。
Eleven 2010-09-01
  • 打赏
  • 举报
回复
HOOK应该是可以的
jameshooo 2010-09-01
  • 打赏
  • 举报
回复
子类化是最合适的方式了,谁说代价太大?
Jekhn 2010-09-01
  • 打赏
  • 举报
回复
钩子应该是可以的,
yuchongjike 2010-09-01
  • 打赏
  • 举报
回复
hook直接拦截指定的消息,然后修改wparam和lparam再postmessage就行了.
如果不想让窗口处理这个消息,那就在拦截之后直接return 1就行了.
向立天 2010-09-01
  • 打赏
  • 举报
回复
子类化是最好的方法吧

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧