社区
硬件/系统
帖子详情
高分悬赏,有胆量的进来拿分,准备1000分!
cqwty
2006-09-26 08:26:51
问题描述:如何获得一个灰色控件,比如按钮,的句柄?
如何拦截一个控件比如按钮从不可用变成可用的消息?
高手请进来回答回答一下,谢谢!
...全文
491
25
打赏
收藏
高分悬赏,有胆量的进来拿分,准备1000分!
问题描述:如何获得一个灰色控件,比如按钮,的句柄? 如何拦截一个控件比如按钮从不可用变成可用的消息? 高手请进来回答回答一下,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cqwty
2006-10-05
打赏
举报
回复
谢谢大家的回复,钩子的方法我用过了,效果不行,而且一个按钮从灰色变成可用,不一定触发的是wm_enable这个消息,所以拦截这个消息肯定不行,而且对于不同的开发工具开发出来的软件,消息不一样,当然除了windows的消息.用windows列的13种钩子不能完成这个功能.使用子类化处理可以完成,子类化处理不复杂,当然也可以使用远程进程注入的方式.现在结贴了.
gaopl_8278
2006-10-04
打赏
举报
回复
窗口过程钩子监视所有从系统消息队列发往目标窗口的消息.
WH_CALLWNDPROC和WH_CALLWNDPROCRET Hooks
WH_CALLWNDPROC和WH_CALLWNDPROCRET Hooks使你可以监视发送到窗口过程的消息。系统在消息发送到接收窗口过程之前调用WH_CALLWNDPROC Hook子程,并且在窗口过程处理完消息之后调用WH_CALLWNDPROCRET Hook子程。WH_CALLWNDPROCRET Hook传递指针到CWPRETSTRUCT结构,再传递到Hook子程。CWPRETSTRUCT结构包含了来自处理消息的窗口过程的返回值,同样也包括了与这个消息关联的消息参数。
编写钩子程序
编写钩子程序的步骤分为三步:定义钩子函数、安装钩子和卸载钩子。
1.定义钩子函数
钩子函数是一种特殊的回调函数。钩子监视的特定事件发生后,系统会调用钩子函数进行处理。不同事件的钩子函数的形式是各不相同的。下面以鼠标钩子函数举例说明钩子函数的原型:
LRESULT CALLBACK HookProc(int nCode ,WPARAM wParam,LPARAM lParam)
参数wParam和 lParam包含所钩消息的信息,比如鼠标位置、状态,键盘按键等。nCode包含有关消息本身的信息,比如是否从消息队列中移出。
我们先在钩子函数中实现自定义的功能,然后调用函数 CallNextHookEx.把钩子信息传递给钩子链的下一个钩子函数。CallNextHookEx.的原型如下:
LRESULT CallNextHookEx( HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam )
参数 hhk是钩子句柄。nCode、wParam和lParam 是钩子函数。
当然也可以通过直接返回TRUE来丢弃该消息,就阻止了该消息的传递。
2.安装钩子
在程序初始化的时候,调用函数SetWindowsHookEx安装钩子。其函数原型为:
HHOOK SetWindowsHookEx( int idHook,HOOKPROC lpfn, INSTANCE hMod,DWORD dwThreadId )
参数idHook表示钩子类型,它是和钩子函数类型一一对应的。比如,WH_KEYBOARD表示安装的是键盘钩子,WH_MOUSE表示是鼠标钩子等等。
Lpfn是钩子函数的地址。
HMod是钩子函数所在的实例的句柄。对于线程钩子,该参数为NULL;对于系统钩子,该参数为钩子函数所在的DLL句柄。
dwThreadId 指定钩子所监视的线程的线程号。对于全局钩子,该参数为NULL。
SetWindowsHookEx返回所安装的钩子句柄。
3.卸载钩子
当不再使用钩子时,必须及时卸载。简单地调用函数 BOOL UnhookWindowsHookEx( HHOOK hhk)即可。
cqwty
2006-09-28
打赏
举报
回复
谢谢楼上的大哥!晚上下班测试!
wangk
2006-09-28
打赏
举报
回复
指定线程dwThreadId:
SetWindowsHookEx(WH_CALLWNDPROC,CallWndProc lpfn,HINSTANCE hMod,dwThreadId);
你只要指定要钩的句柄所在的线程即可。
GetWindowThreadProcessId可以返回句柄所在的线程。具体参见MSDN。
xyx119
2006-09-28
打赏
举报
回复
兄弟你有没有一千分哦,忽悠我们吧!
cqwty
2006-09-27
打赏
举报
回复
但是是跨进程的啊,是对其他的应用程序进行的。子类化能行吗?
cqwty
2006-09-27
打赏
举报
回复
怎么样将一个全局的钩子指定为某一个进程,因为如果是全局钩子,那系统会有点慢,但是指定一个特定的进程后,应该快很多了,不影响系统的性能。谁知道,说一下,谢谢!
cqwty
2006-09-27
打赏
举报
回复
楼上的大哥,可以详细的说说WH_CALLWNDPROC如何使用吗?
wangk
2006-09-27
打赏
举报
回复
消息钩子WH_CALLWNDPROC。对其他的应用程序进行子类化做起来比较麻烦,要用到远线程,绕了个大弯。
cqwty
2006-09-26
打赏
举报
回复
本人声明,不是忽悠,本人知识短浅,所以就这样问了,大家不要笑我,我知道钩子,但是用什么钩子呢?钩子分了很多的撒,键盘,鼠标,外部输入设备的,相应有键盘钩子,鼠标钩子,日志钩子。这个用啥子钩子吗?分数绝对给大家,不忽悠大家!
baojian88888
2006-09-26
打赏
举报
回复
这样的问题还需要悬赏?
「已注销」
2006-09-26
打赏
举报
回复
楼主很会忽悠,你的问题用钩子应该很好解决
cqwty
2006-09-26
打赏
举报
回复
因为是跨进程的,是不同的应用程序,而且可以指定被监视的应用程序,所以我个人也觉得钩子比较合适,拦截wm_enable的消息。楼上的各位大侠,能否告诉我拦截wm_enable消息用什么钩子?谢谢,分数会奉上的,决不食言,功劳大的多得到!
另外,小蘑菇,spy++可以手动获得,怎么手动操作啊?嘿嘿,很少用spy++,所以不知道,不要笑偶哈。
iflang
2006-09-26
打赏
举报
回复
用spy++可以手动获得,,,,,,呵呵
wangk
2006-09-26
打赏
举报
回复
用钩子比较好,特别是跨进程的时候。
templarzq
2006-09-26
打赏
举报
回复
我以为是啥惊天动地的问题。。。
aa3000
2006-09-26
打赏
举报
回复
正如小三所说。过来接分,分我100吧。。。
会思考的草
2006-09-26
打赏
举报
回复
子类化就可以了。
lixiaosan
2006-09-26
打赏
举报
回复
用SetWindowLong替换控件的消息处理,重新处理其消息处理回调函数
也可以写钩子
cqwty
2006-09-26
打赏
举报
回复
通过FindWindow FindWindowEx EnumChildWindows应该可以,但是拦截WM_ENABLE消息怎么拦截呢?是用什么钩子来拦截啊?谢谢!
加载更多回复(5)
太空船游戏例子
太空船游戏例子
考研380
分
什么水平计算机,考研380
分
属于什么水平 算
高
分
吗
考研380
分
属于什么水平,算不算
高
分
,小编整理了相关信息,希望会对大家有所帮助!考研380
分
是什么水平从考研的难度和各方面来说,考研能够考到380
分
是很厉害的水平了!考研究竟多少
分
算是一个比较高的
分
数这主要是根据你的专业,如果是热门
分
一般会比较高,就像工科,320
分
就算是比较高的了,从历年国家划的复试线看来,A区一类线275
分
,320这个
分
数,看你报考的院校了,如果北京的话,那么985的名牌就比较...
2023-HCIA-Datacom题库
分
享!亲测967
高
分
通过!!!
HCIA最新最全题库
分
享!超800+真题!!全部带解析!!!
《python语言程序设计》第5章 第10题利用python 循环找出学生
分
数里的最
高
分
和次
高
分
已经到放弃的边缘。但是2021-8-23 中午我误打误撞的找到了解决下面这个题的方法 该题还是那本没有答案的教材里的内容 5.11 编写程序输入学生个数以及每个学生的
分
数,然后显示最
高
分
和次
高
分
。 根据题面。我今天先忽律学生个数的解答。我进入最
高
分
和次
高
分
。 根据5.10题的方式求取最
高
分
的python代码如下: data = eval(input("Enter data input: ")) number = data while data != 0: data = eval(input("Ent
2023-HCIA-Datacom题库刷题
分
享!984
分
高
分
通过!
HCIA-Datacom,是华为数通认证的初级考试,培训与认证具备数通基础通用知识和技能水平的工程师,只是入门了解数通的一些基础通用知识,适用于小白了解和学习数通知识点起点。本人在2023年7月已通过HCIA-Datacom考试,个人
分
享是考试题目简单,实际考试时间大概20
分
钟左右都可以考完。本人根据考试前的刷题经验,以及考试后的考试总结,自己HCIA-Datacom考试
分
为单选、多选、判断,考试题目60题,考试时间90
分
钟,总
分
1000
分
,600
分
及格。
硬件/系统
2,644
社区成员
17,232
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章