CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

如何取其它隐藏程序的label的文本?

楼主goingup(向我开火!)2005-11-02 21:09:36 在 Delphi / Windows SDK/API 提问

一个程序隐藏了界面  
  有没办法实时取它界面上一个LABEL的文本? 问题点数:20、回复次数:7Top

1 楼coffee36(咖啡)回复于 2005-11-02 21:50:06 得分 5

用FINDWINDOW吧.具体用法查查SDK吧.Top

2 楼goingup(向我开火!)回复于 2005-11-02 22:31:13 得分 0

findwindow会用  
  倒是怎么查窗口里的控件  
  不是很了解Top

3 楼S.F.(chinasf.cnblogs.com)回复于 2005-11-03 00:20:44 得分 0

递归Top

4 楼2004v2004(980)回复于 2005-11-03 08:10:37 得分 0

label     能够作到吗   ?Top

5 楼linzhengqun(风。我回来了)回复于 2005-11-03 14:21:17 得分 0

Label做不到,因为它不是窗口。  
   
  基本上很难。如果这个程序是其他的程序。Top

6 楼kiboisme(蓝色光芒)(www.1284.net/)(软件开发机器人for delphi)回复于 2005-11-04 10:48:27 得分 5

试试屏幕取单词法。  
   
  或者跟踪那个程序,找到设置Label的入口地址(Call   XXX),然后HOOK这个地址,HOOK下来后发消息给你的程序,告诉她新的Caption内容。Top

7 楼Idle_(阿呆)回复于 2005-11-04 19:28:56 得分 10

屏幕取词方法好像无法实现,要屏幕取词需要发送WM_PAINT让对方重画然后通过hook掉的画文本api才能够取得。而LZ要求的是一个隐藏的窗口所以此路不通。  
   
  如果这个label在运行时不会改变那么可以通过访问那个exe的资源文件直接获取label的内容。  
   
  如果会在运行时改变那么就相当麻烦了,我能想到的办法是:  
  用CreateRemoteThread注入对方进程,然后想办法找到那个窗口对应的Form,接下来就好办了。  
   
  根据分析delphi源代码,我发觉可以找到对方进程内hwnd对应的form指针:创建一个atom,   它的名字是'ControlOfxxxxxxxxxxxxxxxx',   其中xxxx..是16字节长的16进制数字字符串,每8个转成integer后分别对应对方进程的HInstance和ThreadID(这些都可以获取),然后用这个atom调用api   GetProp,   它返回的handle就是个TForm,   只要强制类型转换成TForm后就可以访问它下面的所有Control了,   当然所有这一切工作都必须在对方进程空间内完成。  
  Top

相关问题

  • 静态文本控件和GroupBox怎样通过程序隐藏和显示
  • 如何隐藏文本框?
  • 对于一个静态文本,如何在程序中控制其显示和隐藏,用什么函数?谢谢
  • 如何隐藏程序
  • 如何隐藏程序
  • 如何制作隐藏的文本框
  • 如何隐藏文本框的边框?
  • 把文本控件隐藏起来??
  • 隐藏文本框中的光标?
  • 用程序加密TXT文本

关键词

  • 文本
  • 屏幕
  • 程序
  • 隐藏
  • label
  • 对方进程
  • 办法
  • 找到
  • hook

得分解答快速导航

  • 帖主:goingup
  • coffee36
  • kiboisme
  • Idle_

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo