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

  • 主题发起人 主题发起人 cqwty
  • 开始时间 开始时间
WM_ENABLE = 000A;改变enable状态
 
这个比较简单的,能得到Form的句柄吧,然后枚举组件。。。。然后再。。。。
Findwindow
FindwindowEx
 
Findwindow
FindwindowEx
 
楼上各位说的我都知道,要获得句柄,那就首先获得窗体的句柄,然后列举就出来了。
to 风卷残云:
至于拦截消息你可以修改那个Button的消息处理过程,加一句判断消息就行了,(变成可用按钮的消息) 消息好像是 WM_ENABLE 查下吧 帮助,离线资料里面都有,好困,休息下.....
你说的这个是自己写的程序,对于自己写的程序当然好处理,甚至不用消息拦截都可以,直接顺便发送一个给监视程序不就结了。但是对于别人开发的程序呢?他用的button就没有你说的这些了,而要解决这个问题,那就只有拦截。我查了,wm_enable消息是对应的,但是用什么钩子来拦截呢?有人提用windows子类化进行处理,那么就可以了。但是子类化处理之前必须先进入到别人的程序内存空间才可以,否则不行。
 
灰色按钮难道没有句柄?不应该的啊
我在CB中看了下还是有的啊
 
试过了,zj_mpy说的两个函数即可,Ex的函数带上Parent句柄即可。
第二个可能用消息Hook处理

LZ对蓝叶菱的回答,我感觉很奇怪。你是怎么得不到句柄的呢?
稍微实验下就知道的啊。
 
灰色按钮是有句柄,但是我现在要得到的句柄是其他应用程序的,而不是我自己的程序。当然,枚举窗体控件应该可以得到。另外一个问题就是,当一个窗体的按钮从灰色变成可以使用的颜色,那么这个消息怎么拦截。但是这些操作都是其他的应用程序的。
 
就没有人知道了嘛?
 
首先要获得按钮的句柄,然后根据此句柄拦截消息,并判断消息类型
 
to sundata:
大哥,可以详细的指导一下吗?谢谢!
 
楼主相干什么
是不是觉得权限不够
想搞个外挂啊

我觉得还是枚举,通过getmessage判断
 
外挂我没有能力了,只是想搞清楚windows的消息机制,程序写了几年,一点底层的东西都不懂,只要一和操作系统底层接触紧密的东西我就懵了,感觉无从下手。枚举无非就是找出窗体上的具有句柄的控件,但是现在是要拦截消息。
 
WH_MSGFILTER and WH_SYSMSGFILTER Hooks
 
to dreamfly1024:
大哥,你说的这两个钩子不能解决我的问题哦!
 
如果不是要做通用程序的话,给个你要监控的程序下载地址帮你看看。
 
想做成通用的,就是指定哪个窗口,就可以监视哪个窗口的.如果不是通用的,那就没有啥子意思了撒,当然我不是写外挂,只是希望能够通过指定其他应用程序的窗体即可拦截到我要的消息.
 
老白,麻烦顺便帮忙看看这个问题,代码在这边的了.但是会出错!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3585975
 
如果想做通用的,先用 od 拦一下 CheckMenuItem,确定是否用了这个api.
 
结贴了,问题我还是没有解决,不过找到了别的方法代替了.
当然首先就是hook,然后当一个按钮从灰色编程可用的时候,不同的开发软件开发出来的是不一样的,不一定都是wm_enable这个消息.但是当这个消息发生的时候,会有一个十进制的309(需要的自己去兑换成十六进制).另外使用钩子的时候,不要使用windows提供的13种钩子,采用子类化技术,可以实现跨进程的消息拦截的.代码在网上有,在delphi深度历险的书中也有.谢谢大家的参与!
 

Similar threads

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