Delphi版 关于QQ输入控件无法Spy到句柄的实现方案可行性研究
来源:互联网 发布:js判断是否为空对象 编辑:程序博客网 时间:2024/06/06 08:25
QQ2009版本的界面,和以前的版本有个显著的不同,就是无法通过Spy++抓到界面上某些元素的句柄了,对于这个技术的实现方案,相信好多人都有一些揣度,实现方法怎样,有人说是应用的DirectUI技术,也有人说是用反Hook,等等一些列的说道!在这,我也说说我的一点看法!我说的一种方法不属于以上的任何一种方法。至于如何,且听我慢慢道来!此思路,来源于一个偶然,在聊天窗口失去焦点与获得焦点时的一个偶然。
聊天的时候,我们要输入信息,首先要让窗口获得焦点!然后输入框也要获得焦点,才能输入。那么我们可以想象一下,在Delphi中什么情况下的控件时没有句柄的,用Delphi的同僚都知道,TGraphicControl继承下来的控件都没有焦点,既然如此,那么咱们就可以有一个混淆视听的方式,写的控件都从TGraphicControl继承来写,那么肯定就没句柄的,这个Button,ScrollBar等不必体现输入的,我相信没有争议,那么我实现一个编辑框Edit,也从TGraphicControl继承来写!这样,别人不就无法找到这个编辑框的句柄了么?嘿嘿,此时一定会有很多人大惑不解,那么输入呢,从TGraphicControl继承的Edit,如何实现输入?难道全部自己模拟消息来实现输入?当然不是,如果这样,那将让工作量增大N倍而不尽然能成功!重点就在这里,这是,我们可以在内部放一个TEdit,本Edit是活动的,在鼠标点下,或者模拟获得焦点的时候,我们将内置的Edit的Parent设置成我们从TGraphicControl继承的Edit的Parent,也就是Edt.parent :=self.parent;并且设置内置Edit的区域,然后在内置Edit.setFocus,这样就能够输入了,然后当这个内置Edit失去焦点的时候,我们将内置Edit的显示文字抓成图片,之后,将内置edit的parent设置为nil,然后在在这个GrphicControl的Edit的对应区域绘制上我们抓取出来的那个真实Edit的图片,这样,内置的Edit已经不再本界面上了,从而当外部Spy++在Spy的时候,就无法找到那个Edit进而进行信息的获取等操作了!这便是我的实现思路。那么就可以想象,QQ聊天窗口在我们要输入信息的时候,获得焦点了,RichEdit的parent为QQ聊天窗口,然后我们输入信息,当信息输入完成,我们离开了之后,将内部的RichEdit的parent设置为nil,然后再将RichEdit的画面获得到绘制到原来的位置上去。这样 ,我们就无法Spy到RichEdit的句柄了。
下面给出俺的模拟代码:
这个代码中的DxEdit就是了,大家可用Spy查一下,肯定是查不到句柄的说!呵呵!
不过这个只是实现了一个简单的模拟而已,如果要完全达到QQ的那个效果,还有许多其他工作要做,这里仅提供一个实现的思路参考
下载
不得闲作于2010-2-25
- Delphi版 关于QQ输入控件无法Spy到句柄的实现方案可行性研究
- 用DELPHI、RxRichEdit控件实现类似QQ的表情输入方法
- VC++实现spy++获取窗口句柄的功能
- 使用Spy++获取的句柄值
- VB6中类似SPY++查找目标窗口句柄效果的控件,拖动标靶时目标区域会有闪烁效果
- 远程问题解决方案(连接到** 的凭据无法工作,请输入新凭据)
- 远程问题解决方案(连接到** 的凭据无法工作,请输入新凭据)
- Delphi 查找标题已知的窗口句柄,遍历窗口控件句柄
- 获取活动窗口输入焦点控件句柄的方法
- 获取当前具有输入焦点控件的窗口句柄
- 获取当前具有输入焦点控件的窗口句柄
- 关于Ubuntu16.04 中wine QQ 国际版无法输入中文
- 关于Ubuntu16.04 中wine QQ 国际版无法输入中文
- 关于贷款买官的可行性研究报告
- 关于QQ软件无法安装的问题
- Delphi皮肤控件分析与QQ的皮肤变色功能
- Delphi实现的登录窗口切换到桌面无法显示的问题
- 关于Jquery_UI datepicker控件中按钮图标与输入框无法对齐的解决办法
- 优秀程序员的45个习惯
- ETL工具介绍
- 如何用代码实现textbox换行
- 如何重定向域控制器的活动目录数据库
- 小虎队
- Delphi版 关于QQ输入控件无法Spy到句柄的实现方案可行性研究
- 第一次使用ADO.NET
- java 代码生成数字证书
- 用命令行发送键盘,touch消息
- EXISTS、IN、NOT EXISTS、NOT IN的区别
- 对路径“……”的访问被拒绝
- hdu acm 2033
- AIX+ORACLE10g RAC ORA-04030 问题解决过程
- Symbian S60第三版手机最基本常见问题及解决方案