首页
社区
课程
招聘
请指教,如何编写一个程序,获取并设置指定程序中的文本控件
发表于: 2011-8-20 17:32 4552

请指教,如何编写一个程序,获取并设置指定程序中的文本控件

2011-8-20 17:32
4552
请指教,如何编写一个程序,获取并设置指定程序中的文本控件,
请详细点给出方案哦。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
LZ搜索一下spy++的实现原理,很多很多。可供参考,而且有源码的。
2011-8-20 18:26
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
用GetWindowText可以获取到其它进程窗口内控件的文本,只要能获取到这个控件的句柄就可以实现了

程序;获取文本的函数是CMyView::AddWindowInfo,代码如下:

//AddWindowInfo.cpp源代码
//////////////////
// 添加窗口信息, 顶层或者编辑框控制
void CMyView::AddWindowInfo(int iItem, HWND hwnd)
{
   CListCtrl& lc = GetListCtrl();
   CWnd* pWnd = CWnd::FromHandle(hwnd);
   int iSubitem = 1;

   // 添加类名
   CString s;
   ::GetClassName(hwnd, s.GetBuffer(STRINGLEN), STRINGLEN);
   lc.SetItemText(iItem,iSubitem++,s);

   // 用GetWindowText添加窗口文本
   pWnd->GetWindowText(s);
   lc.SetItemText(iItem,iSubitem++,s);
   // 用WM_GETTEXT添加窗口文本
   DWORD result;
   SendMessageTimeout(hwnd,
      WM_GETTEXT,
      STRINGLEN,
      (LPARAM)s.GetBuffer(STRINGLEN),
      0,
      1000,
      &result);
   lc.SetItemText(iItem,iSubitem++,s);
   s.ReleaseBuffer();
}
2011-8-20 21:12
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
对于简单的控件,可以获得句柄之后SendMessage即可。复杂的控件,可能需要Dll injection。
2011-8-21 22:44
0
雪    币: 160
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
文本控件,用GetClassName和GetWindowText判断后,找到HWND,然后SendMessage,可行。
现在有个数字图片验证码,想从图片获得数字。是否要DLL injection啊,去获得信息?怎么弄啊?有没这方面的资料。。我的qq42616302.
2011-8-22 10:33
0
雪    币: 17
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
已加楼主QQ
2011-8-22 13:38
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
这个类似定制的控件,比较麻烦的。因为消息是定制的,需要仔细跟踪的。
2011-8-22 15:56
0
游客
登录 | 注册 方可回帖
返回
//