高分悬赏解决难题,准备500分相送解决的人,有胆量的进来!(100分)

  • 主题发起人 主题发起人 cqwty
  • 开始时间 开始时间
C

cqwty

Unregistered / Unconfirmed
GUEST, unregistred user!
问题如下:
如何获得灰色按钮的句柄?
如何拦截灰色按钮变成可用按钮的消息?
大家有什么想法,有什么办法可以说出来,分数不够再加500分!
 
这个问题。不会,会的请给我发一封。。谢谢
 
to 枫叶下的风铃:
关于枚举的问题,我想spy++用的应该是这个,还有delphi里面的ws,可是都不能得到灰色按钮的句柄。而对于窗体来说,一旦创建,肯定相关的控件的句柄已经创建了,但是为什么得不到?还有就是一个按钮从灰色变成可以使用,那么该拦截什么消息?用什么样的钩子来做呢?
 
To 搂主 还是省省 力气, 你加开发的产品也不容易。
给点 money , 用正版……
 
[:)]Delphi每个控件都有parent,由它销毁.从parent动手上应该可以找到句柄
 
既然不能直接得到不可用的,为什么不间接地监测可用的parent呢?
 
但是从windows的机制来说,一旦窗体创建,所有的控件都创建了,句柄也有了,那这个句柄在哪里去找?我需要获得这个句柄,不管这个控件是不是可用,都可以获得。还有就是涉及到的,当一个控件,比如按钮,从不可用变为可用,会触发什么系统消息,我需要拦截这个消息。当然监视可用的parent也可以,但是存在一个问题,我需要不断的去检测,但是如果有一种象鼠标钩子这样的办法,当发生变化的时候,系统同时把这个消息发送过来,那不就更好嘛?
 
to 楼组 我一直象问你名字前两个字母 CQ 是重庆的意思吗?
 
这个问题是不是没有人会啊?嘿嘿
 
我感觉其实就是个实时监控,获取屏幕图像,进行像素解析得了。如果你知道按钮的位置效果更佳
 
你这个办法是最终没有办法的办法,但是我要监视的软件如果不显示在窗体的前端,那怎么监视?你监视不了吧!所以还是需要从本质上找到解决方法。
 
枚举组件,如果SPY也得不到,就是初始化后,这个窗口就没有生成这个这个窗口的句柄,仅仅是绘图而已....
但是我你还是先试试再说,每个按钮都是通过CREATEWINDOWEX进行创建的...句柄应该有的,列举一个窗口的组件,你应该试试可否见到再说...

....如果没有的话,现在钩子估计实现WINDOWS重绘制什么比较难吧..

遇见....
 
to 蓝叶菱:
我用别人写的代码测试过,对于一个窗体,如果开始创建的时候,让按钮是灰色,然后用另外一个按钮的点击事件来让这个按钮成可用按钮,那么这个按钮就有了句柄了,然后再让这个按钮成灰色,句柄没有了,如果只是绘图的话,那么我再次让这个按钮可以用,这个时候的句柄应该和前一次的句柄可能不一样。但是事实证明,再次让按钮可用,这个按钮的句柄还是前一次的句柄。所以由此我才想,应该是在开始的时候就创建了相关控件的句柄,只是在灰色的时候不能得到,但是可用之后就可以得到。
对了,另外说一下我要做的东西是什么,望大家给我出出点子。我要做的是一个监控程序,这个监控程序指定一个应用程序,监控这个应用程序的控件的状态变化,比如按钮的状态变化,从灰色变成可用,从可用变成灰色!
 
我以前有这段代码,找找看能否找到
 
谢谢oupj哦,如果能找到,我另外开贴,再给500分,提供解决原理,不管是不是真的有效,都有分,欢迎大家参与哦!
 
呵呵...端凳子坐坐学习.会不会是跟线程是同一机制?spy的是活动句柄的 吧?
 
无端猜测..知识深度不够请见谅..现在就去找资料.
 
用WindowFromPoint函数可以获取到句柄,楼主试试
至于拦截消息你可以修改那个Button的消息处理过程,加一句判断消息就行了,(变成可用按钮的消息) 消息好像是 WM_ENABLE 查下吧 帮助,离线资料里面都有,好困,休息下.....
 
有心无胆
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部