进程A把消息钩子安装到了进程B,按理说应该是过滤进程B的消息呀,为什么其他进程的消息也过滤了?奇怪哦~

hsly110 2005-07-12 08:01:02
程A把消息钩子安装到了进程B,按理说应该是过滤进程B的消息呀,为什么其他进程的消息也过滤了?奇怪哦~

用 SetWindowsHookEx 的最后一个参数传入了进程B的主线程ID了,为什么其他进程的消息还是被过滤。


我安装消息钩子 到进程B,如果进程B的窗体移动,就弹出一个消息框出来。效果是有了,但是不属于进程B的窗体,移动时,也弹出! 郁闷哦~

我使用的是 WH_CBT 方式。资料说 可以属于线程或者系统范围
...全文
190 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsly110 2005-07-12
  • 打赏
  • 举报
回复
冷静的检查了一下代码,原来是自己写的代码太混乱,才导致这样的问题发生.

呵呵,搞掂~~ 多谢大家指点我这个菜鸟!
hsly110 2005-07-12
  • 打赏
  • 举报
回复
我已经很小心了。GetWindowThreadProcessId取得的数值和SPY++ 一样.
就是不行.

我在检查一下代码看看~ 我发现 SPY++ 有个概念 叫 窗体进程ID 是不是传窗体进程ID ? 而不是传线程ID 呢 ?

我再测试一下 ~~ 有心得在告诉你们!
caucyniu 2005-07-12
  • 打赏
  • 举报
回复
我的意识是你的B进程的ID根本就没得到传去的是NULL,也就是GetWindowThreadProcessId函数失败
qrlvls 2005-07-12
  • 打赏
  • 举报
回复
HHOOK SetWindowsHookEx( int idHook,
HOOKPROC lpfn,
HINSTANCE hMod,
DWORD dwThreadId
);

dwThreadId
[in] Specifies the identifier of the thread with which the hook procedure is to be associated. If this parameter is zero, the hook procedure is associated with all existing threads running in the same desktop as the calling thread.

因此 SetWindowsHookEx 时最后一个参数为 0 则会在全局范围内挂钩,只安装到某一个进程需要指定相应的 Thread ID
fireseed 2005-07-12
  • 打赏
  • 举报
回复
是这样的,WH_CBT是全局钩子

你可以通过HWND参数来判断该消息是不是发送到你要的窗体。
caucyniu 2005-07-12
  • 打赏
  • 举报
回复
你的进程B ID是NULL ,和0 一样, 可以先判断下是不,应该是通过findwindw得到是不?
wbf420 2005-07-12
  • 打赏
  • 举报
回复
你应该先半断是不是要处理的进程
caucyniu 2005-07-12
  • 打赏
  • 举报
回复
Windows核心编程中是个好东西 ,我们可以研究下 hsly110呵呵
MSN:caucyxia2002@hotmail.com
caucyniu 2005-07-12
  • 打赏
  • 举报
回复
不会快学啊 , jun_01,很有意识的啊嘿嘿。
其实FindWindow(NULL,str);那个str还真不好写,其实就是SPY++ 的Window Caption。
比如:Cwnd *pWnd=FindWindow(NULL,"Winamp 播放清单编辑器");
pWnd->SendMessage(WM_CLOSE);
发现mp3就关啦嘿嘿
jun_01 2005-07-12
  • 打赏
  • 举报
回复
俺还不怎么会钩子,郁闷ing
源码下载地址: https://pan.quark.cn/s/8d2c461c797c JavaWeb程序设计构成了掌握Web交互式应用程序开发的核心领域,对于初学者来说,精通这一技术具有决定性意义。在“JavaWeb程序设计(第三版)作业答案”中,我们可以预期获得针对该教材习题的一系列深入解析,从而协助学习者强化知识体系。 JavaWeb所包含的技术组件涵盖了Servlet、JSP(JavaServer Pages)、JDBC(Java Database Connectivity)以及各类框架如Spring MVC、Struts等。Servlet是Java平台提供的一种扩展服务器功能的接口,能够处理HTTP请求并生成相应的反馈。JSP则是一种用于构建动态网页的工具,它支持开发者将HTML代码与Java代码进行整合编写,从而简化了Web应用程序的开发流程。 作业答案通常会涉及以下几个核心内容: 1. **Servlet基础**:可能包含Servlet生命周期、init(), service(), destroy()方法的应用,以及如何在web.xml文件中设定Servlet的映射关系。 2. **JSP基础**:JSP的九大内置对象,如request、response、session、application等的使用,以及EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)的实际操作。 3. **HTTP协议理解**:GET和POST请求方法的差异,请求头与响应头的应用,以及会话管理的概念阐释。 4. **JDBC数据库操作**:与数据库建立连接,执行SQL指令,处理查询结果集,以及...
源码链接: https://pan.quark.cn/s/a4b39357ea24 斐讯K2是一款广受用户青睐的无线路由器,其运行表现稳定且具备较高的可操作性,在DIY爱好者群体中拥有极高的声誉。本资料将系统性地阐述斐讯K2的固件刷机方法及其关联的技术要点。固件升级是路由器爱好者改善设备性能、扩展功能的一种普遍手段,经由替换出厂固件,能够达成更加个性化的网络配置、增强安全防护等目标。斐讯K2固件资源库涵盖了多种知名的非官方固件,诸如Tomato Pheonix 不死鸟、高恪、PandoraBox 潘多拉等,这些固件均具备独特的优势,能够适配不同用户的需求。 1. Tomato Pheonix 不死鸟:Tomato是一款立足于Linux的开源固件,以其精巧、高效而备受推崇。不死鸟版本是专门为华硕及斐讯路由器优化的分支,提供了卓越的QoS(服务质量)配置、详尽的图表监控以及便捷的固件升级途径。对于那些需要精准调控带宽和监测网络状态的用户而言,这是一个理想的选项。 2. 高恪:高恪固件是OpenWrt的定制化版本,着重于操作的便捷性和运行的可靠性,特别适合对路由器操作不甚熟悉的用户群体。它提供了一些实用的功能,例如内置的广告屏蔽、快速测速工具等,同时保留了OpenWrt的适应性。 3. PandoraBox 潘多拉:潘多拉盒是另一款基于OpenWrt的固件,它以丰富的插件库和强大的自定义潜力而闻名。用户能够依据个人需求安装各类插件,实现更多功能,如远程接入、DDNS(动态域名解析服务)等。 4. 官方固件的纯净版本与定制版本:官方固件通常更侧重于稳定性,纯净版意味着未预置额外的应用或服务,适合注重稳定性的用户。定制版则可能包含了制造商的特色功能或优...

16,550

社区成员

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

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

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