關于GetWindowText的問題(50分)

  • 主题发起人 主题发起人 databox
  • 开始时间 开始时间
D

databox

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大俠﹐為何我用這個函數不能取得有的表框的文字。如OutLook里面的密碼框里的文字﹖
function Gettxt(wnd:HWnd): PChar;
var L:integer;
name:PChar;
begin
L:=GetWindowTextLength(Wnd)+1;
GetMem(Name,L);
GetWindowText(Wnd,name,l);
Result:=name;
freemem(name,0);
end;
能有解釋和解答方法嗎﹖IE瀏覽器里文本框的資料應該讀不出吧﹖哪位大俠能幫我翻譯一下﹖
 
浏览器里的文字肯定不能获取,至于OutLook应该可以吧
 
用此方法98下可以得到OutLook密码框里的内容,NT和2000下不行
 
to Fyx:
為何我在WIN98下面也不行呢﹖我是用的OutLook2000﹐請問這是什么原因呢﹖有解決辦法
嗎﹖
 
我觉得 IE 和 OutLook 的输入框好象是画上去的,反正我无法得到他们的句柄
 
很奇怪,我用WinSize看到的IE的编辑框 Class:Internet Explorer_Server。
而一般的编辑框是TEdit。
 
To wjiachun:
你得到的是整个 IE 的 body !
不信你试一试查看其他地方,如空白,得到的也是 Class:Internet Explorer_Server
 
所以我才觉得奇怪啊?
 
可以阅读一下关于屏幕取词的方法,其中就有一些技巧可以利用。
由于getwindowtext()只能取得窗口的句柄,而无法取得子类的句柄
因而无法读取例如edit里的字符。
 
说不定新的 outlook 为了防止取得密码,采用了什么特殊的手段。
比如密码框里的其实本来就是星号……
 
我抓OutLook密碼框旁邊的Label就能抓下來﹐但抓密碼框里的資料就不行了﹐而且上面的用
戶框中的資料也不行。我自己曾寫了一個程序﹐我將密碼框放在一個圖片上﹐就抓不到密碼﹐
而若我將圖片去掉﹐就能抓到。請問各位是什么問題﹐有解決法子嗎﹖
 
我想IE框里的内容都是画上去的吧,也就是说IE里面的控件都没有句柄不知对不对?
 
有沒有誰還能解釋一下﹖
 
你试试SendMessage(Wnd,WM_GETTEXT,....
应该可以,我做过的:)
 
Reboot﹐請寫完整點﹐好嗎﹖能得到OUTLOOK密碼框中的內容嗎﹖
 
请问李鸿:如何得到子类窗口的句柄?这个问题困扰我好长时间了。
 
procedure TForm1.Timer1Timer(Sender: TObject);
var
p: TPoint;
hwnd: integer;
buf: array[0..1023] of char;
begin
Windows.GetCursorPos(p);
hwnd := WindowFromPoint(p);
if hwnd<>0 then
begin
SendMessage(hwnd,WM_GETTEXT,1023,Integer(@buf[0]));
Label1.text := strpas(buf);
end;
end;
 
Reboot:現在UserName框里的內容能查出來了﹐但PASS框里的還是查不出來﹐很查出來嗎﹖
不能的話﹐請問是什么原因﹖謝謝﹗
 
reboot﹐請問還有辦法嗎﹖抱歉﹐我的分太少﹐我准備全部給reboot。
 
后退
顶部