如何读取另一程序文本框的数据(50分)

  • 主题发起人 主题发起人 freewolf
  • 开始时间 开始时间
F

freewolf

Unregistered / Unconfirmed
GUEST, unregistred user!
打开SPY++ 找到窗体的类名
使用FINDWINDOW FINDWINDOWEX 找到这个程序的文本框
对这个对象 发送WM_GETText消息
得到内容 我原来用此方法扣出其他程序中所有的号码段列表 呵呵

具体实现 楼主自己查了 [:D][:D]
 
问题: 如何得到另外一个应用程序的某一个窗体中文本框的内容 ( 积分: 200 )
分类: Windows API

来自: wdq, 时间: 2000-01-06 17:45:10, ID: 172963
我碰到一个问题,要在我的程序中读取另外一个应用程序
的某一个窗体中文本框的内容,前提条件时,知道另一个应
用程序的名称、窗体的名称、文本框的名称
我只知道似乎可以用 GetDlgItemText 获得,但其中的参数
不只如何写。
还请诸位高手帮忙。

来自: robot, 时间: 2000-01-06 18:26:22, ID: 172972
>>

来自: Hexi, 时间: 2000-01-06 20:25:13, ID: 173000
问tqz,他肯定知道以前他的主页上就有这样的程序,不过现在去不了喽

来自: Keyes, 时间: 2000-01-07 8:44:39, ID: 173115
int GetWindowText(
HWND hWnd, // handle of window or control with text
LPTSTR lpString, // address of buffer for text
int nMaxCount // maximum number of characters to copy
)

不用说了吧,传递一个这个文本框的handle,和buffer....
至于如何获得文本框的handle,
FindWindowEx(FindWindow('应用程序窗体的类名', nil),
0,
'文本框的类名',
nil),
TRUE)

详细请看FindWindowEx and FindWindow 的help



来自: DNChen, 时间: 2000-01-09 5:39:10, ID: 173699
getwindowtext是标准方法,用这个方法可以获得*号密码正文

来自: 阿蒙, 时间: 2000-01-09 11:38:47, ID: 173747
keys 真厉害。

来自: Keyes, 时间: 2000-01-09 13:21:50, ID: 173792
to 阿蒙
I am Keyes not keys

来自: Hexi, 时间: 2000-01-09 14:22:31, ID: 173812
1.find window's handle

2.send a message to the handle to select all text.
3.send a message to copy to 剪切板(sorry)
4.send a message to paste to your program.
5.send a message to select none.

来自: jet, 时间: 2000-01-09 15:22:37, ID: 173838
好像可以向它发一个gettext的消息,具体我忘了。查查以前的问题,有人答过的!

来自: walala, 时间: 2000-01-10 9:04:06, ID: 174069
想盗密码?hehe

来自: Keyes, 时间: 2000-01-10 9:59:37, ID: 174083
结束啦.

来自: wdq, 时间: 2000-01-12 19:42:15, ID: 174797
我试了,但不行,我不知道如何写文本框的类名?


来自: 阿蒙, 时间: 2000-01-12 20:00:04, ID: 174807
结束还早。嘿嘿

来自: www, 时间: 2000-01-15 16:01:45, ID: 175813
var
aWindow: Hwnd

L_ClassName, L_Content1: array[0..100] of char

begin
try
aWindow :=findwindow(nil,'窗口名')

GetClassName(aWindow, L_ClassName, 100)

SendMessage(aWindow, WM_GETTEXT, 100, LongInt(@L_Content1))

Edit1.Text := StrPas(L_Content1)

except
end

Edit1中就是你想要的东西。

来自: cAkk, 时间: 2000-01-15 22:22:34, ID: 175936
不要想当然,上面的方法对普通窗口还可以,对"对话框"根本不灵.

来自: wdq, 时间: 2000-01-16 12:21:00, ID: 176123
问题是,我的窗体上有好几个文本框,我该如何对应的
取到每一个的内容呢?

来自: hllu, 时间: 2000-04-12 4:00:13, ID: 218141
如果是对话框内的edit, 可以以下方法得到(前提是你知道有几个EDIT)
var
hdlg, hedit1,hedit2....: hwnd

text: pchar


begin
hdlg:=findwindow(pchar('#32770'), pchar('窗口名‘));
hedit1:=findwindowex(hdlg,0,pchar('edit'),nil)

hedit2:=findwindowex(hdlg,hedit1,pchar('edit'),nil)

hedit3:=findwindowex(hedlg,hedit2,pchar('edit'),nil)

......
getmem(text, 255)

sendmessage(hedit1,wm_gettext,255, interger(@text))

....

如果是普通window, 把第一句改了。
我用这个做了个自动登录的工具,对付哪些过一段时间就要你重新登录的垃圾程序。

来自: wdq, 时间: 2000-04-12 20:44:49, ID: 218687
多人接受答案了。

得分大富翁: Hexi-50,hllu-50,Keyes-50,www-50,
 
多人接受答案了。
 
后退
顶部