怎样获得窗体种label文字?

ronaldli 2003-08-12 07:03:54
比如net send 接收到的信息,怎样得到它的文本?
...全文
154 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ronaldli 2003-08-18
  • 打赏
  • 举报
回复
深了,连汇编都上来了
说实话,我基础比较差,有几个关键点还不是很明白

1、我怎样找到TextOut系统API的地址
2、我没改写过进程内存,希望能简单介绍一下,或介绍本参考书
ronaldli 2003-08-18
  • 打赏
  • 举报
回复
ok, thx a lot, settle accounts!
toplor 2003-08-18
  • 打赏
  • 举报
回复
给你介绍一本还算不错的书吧: <<Delphi下深入Windows核心编程>>


---------------------------------------------------------
风过西窗客渡舟船无觅处
年年一川新草遥看却似旧
大地精灵 2003-08-15
  • 打赏
  • 举报
回复
学习
kkk2000 2003-08-15
  • 打赏
  • 举报
回复

ronaldli 2003-08-15
  • 打赏
  • 举报
回复
hilove(小枫):
你的代码很有用,但是Label不是窗体,是没有句柄的,所以你的代码不能实现

toplor(霜天晓竹):
怎么调用APIHook?
toplor 2003-08-15
  • 打赏
  • 举报
回复
调用SetWindowsHookEx和UnHookWindowsHookEx等函数,使自已的Dll注入到需要取得Label的文字的所在的进程, 找到TextOut等系统API的地址,修改它的前五个字节,使其跳转到自已定义的截获函数,这样做之后每一条TextOut系统调用都会转到你的自定义函数之中来,这样就可以获得所有的字符输出.
关键API:
WriteProcessMemory
OpenProcess
VirtualQuery
VirtualProtect

还有Jmp指令0xE9等


---------------------------------------------------------
风过西窗客渡舟船无觅处
年年一川新草遥看却似旧
IORILI 2003-08-13
  • 打赏
  • 举报
回复
參與
hilove 2003-08-13
  • 打赏
  • 举报
回复
给你一段C的代码,希望对你有启发:
#define ZOU_PROCESS_ERROR(condition)
if(!(condition))
goto Exit0; //错误处理宏定义
int CGetWindowInfo::GetRealWindow(HWND *phWnd, POINT ptPoint)
{
int nResult = false;
int nRetCode = false;
HWND hWndTop = NULL;
HWND hWndChild = NULL;
POINT ptCooChild = {0};
LONG lWindowStyle = 0;
//先得到ptPoint指向的(子)窗口
hWndTop = ::WindowFromPoint(ptPoint);
ZOU_PROCESS_ERROR(hWndTop);
ptCooChild = ptPoint;
lWindowStyle = GetWindowLong(hWndTop, GWL_STYLE);
//通过这个判断找到最上层的父窗口(也就是上面图片中“QQ设置”的主窗口)
if( !GetParent(hWndTop) ||
GetDesktopWindow() == GetParent(hWndTop) ||
!(lWindowStyle & WS_CHILDWINDOW))
{
*phWnd = hWndTop;
}
else
{
*phWnd = GetParent(hWndTop);
}
// 转换相对坐标
::ScreenToClient(*phWnd, &ptCooChild);
//从父窗口一层一层往下查找子窗口,直到找到最底层的子窗口
while (TRUE){
hWndChild = RealChildWindowFromPoint(*phWnd, ptCooChild);
if (hWndChild && (hWndChild != *phWnd))
*phWnd = hWndChild;
else
break;
}
nResult = true;
Exit0:
return nResult;
}

补充:
1、这是一个类SPY++的写法。LABEL也是窗体的一种,即程序中认为的子窗体。
2、最好用枚举系统任务的方法,别用FINDWINDOW。

另我在申请版主,希望多多支持。到下面这个网址支持我:
http://expert.csdn.net/Expert/topic/1893/1893700.xml?temp=.8558466
toplor 2003-08-13
  • 打赏
  • 举报
回复
从根本上说,它是系统调用TextOutA(W)或ExtTextOutA(W)输出的

用APIHook, 截获它的TextOut输出, 就可以了,很容易的


---------------------------------------------------------
风过西窗客渡舟船无觅处
年年一川新草遥看却似旧
雨后阳光2000 2003-08-13
  • 打赏
  • 举报
回复
^_^……哪就参与了
ronaldli 2003-08-13
  • 打赏
  • 举报
回复
获取net send接收到的文本,我已解决
关键在于net send信使服务对话框可以复制

所以我只要EnumWindows,找到“信使服务”窗体,然后SendMessage(hWnd, WM_COPY, 0, 0),最后自己解析剪贴板中的文本就可以了

而且在窗体中有句柄的控件也是可以得到文本的,但是,普通对话框中的Label我就不会取了。

等待一周,没人解决就颁发参与奖
meing 2003-08-12
  • 打赏
  • 举报
回复
用WIN32 API吧,有函数可查得窗口的handle.再用handle 做吧.好象与查*内容一样!
pressman 2003-08-12
  • 打赏
  • 举报
回复
这应该没办法了

别人程序里LABEL里的文字,

好象很难哦!

帮你顶,

让高手来答
FrameSniper 2003-08-12
  • 打赏
  • 举报
回复
我也学习,都不知道楼主说什么,真是惭愧,呵呵.........观望...........
pankun 2003-08-12
  • 打赏
  • 举报
回复
Net Send后接收到的信息应是个用MessageBox显示出来的对话框吧。
sixgj 2003-08-12
  • 打赏
  • 举报
回复
种label是什么东西?
huojiehai 2003-08-12
  • 打赏
  • 举报
回复
学习...

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧