如何编程实现获取 IE 内 JAVA Applet 中的某个编辑框的内容。(300分)

  • 主题发起人 主题发起人 杨先彬
  • 开始时间 开始时间

杨先彬

Unregistered / Unconfirmed
GUEST, unregistred user!
如题。谢谢!!
 
直接用WindowFromPoint就行了
Applet内的是标准Edit来的。
 
to xianjun:
1。WindowFromPoint 配合 getcursorpos() 取的是当前光标所在位置的句柄,但是如果 applet 中的edit
并非当前光标所在位置的话,则无法自动取得句柄,更无从使用 sendmessage(hwnd,wm_gettext,256,longint(@s))取得内容。
2。小弟今天作了个测试,使用 delphi 里的 TWebBrowser1 来获取一个内嵌 applet 的网页
尽管光标在 applet 的 edit 里头,却无法取得 applet 内的 edit 的内容。
 
如果不能用WindowFromPoint的话,可以用EnumWindow等API枚举每个窗口
然后再找到你要找的EDIT, 因为Applet里面的是标准的Edit
最上层窗口是SumAwtFrame,然后是一个个窗口,都有独立的Handle.
 
EnumWindow 很早前就试过了。同样没有无法取到 applet 内的edit 的内容。而仅找到
叫 MSAWT_Comp_Class 的类,无法找到xiaojun 说的SumAwtFrame
这是我的代码:
function EnumWindowsProc(AhWnd:longint;aform:tform1):boolean;
var
lpszclassname,lpszwindowtext :array[0..255] of char ;
s : string ;
begin
getwindowtext(ahwnd,lpszwindowtext,254);
getclassname(ahwnd,lpszclassname,254);

s := strpas(lpszclassname);
form1.memo1.lines.add('标题:'+strpas(lpszwindowtext));
form1.memo1.lines.add('类名:'+s);
form1.memo1.Lines.add('----------------------');
result := true ;
end;

procedure TForm1.Button3Click(Sender: TObject);
VAR
hwndIE,hwndworker,hwndtoolbar,hwndcomboboxex,hwndcombo,hwndedit : longint ;
buffer : array [0..254] of char ;
i : integer ;
begin
memo1.lines.clear;
hwndIE := FindWindow('ieframe',nil);
EnumChildWindows(hwndIE,@EnumWindowsProc,longint(TForm1));
EnumChildWindows(a,@EnumtClienWindowsProc,longint(TForm1));
end;
 
你把所有窗口都枚举出来看看有没有类名是以 SunAwt 开头的?
在我这里是找到这些的子窗体,然后里面的Edit、Button都是标准的Windows控件
 
to xianjun :
能否给我些代码?fddsa@netease.com 谢谢!!
 
无须太多,一小段可运行的代码 DEMO 即可。万分感谢!!!
 
遍历所有窗口及其子窗口,找到你要找的Edit框,然后取得里面的内容:
function EnumWindowsProc(AHwnd: THandle; LPARAM: Integer): Boolean; stdcall;
begin
EnumChildWindows(AHwnd, @EnumChildProc, 0);
//在EnumChildProc里判断类名
Result := True;
end;

EnumWindows(@EnumWindowsProc, Integer(clbProcess));
 
问题解决。原来我没有装 JDK,昏倒!
 
后退
顶部