这是从网上找到的,希望对你有帮助! function EnumChildWindowsProc(hwnd: Integer; lparam: Longint): Boolean; stdcall; var buffer: array[0..255] of char; begin Result := True; GetClassName(hwnd,buffer,256); if StrPas(Buffer)='Edit' then begin SendMessage(hwnd,WM_GETTEXT,256,lparam); Result:=False; end; end;procedure TForm1.Button1Click(Sender: TObject); var hwnd: Integer; buffer: array[0..255] of char; begin hwnd := FindWindow('CabinetWClass',nil); if hwnd< > 0 then begin EnumChildWindows(hwnd,@EnumChildWindowsProc,Integer(@buffer[0])); Caption := StrPas(buffer); end; end;
function EnumChildWindowsProc(hwnd: Integer; lparam: Longint): Boolean; stdcall;
var
buffer: array[0..255] of char;
begin
Result := True;
GetClassName(hwnd,buffer,256);
if StrPas(Buffer)='Edit' then
begin
SendMessage(hwnd,WM_GETTEXT,256,lparam);
Result:=False;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
hwnd: Integer;
buffer: array[0..255] of char;
begin
hwnd := FindWindow('CabinetWClass',nil);
if hwnd< > 0 then
begin
EnumChildWindows(hwnd,@EnumChildWindowsProc,Integer(@buffer[0]));
Caption := StrPas(buffer);
end;
end;
2.用GetWindow枚举窗口,因为Ie窗口类是IEFrame或CabinetWClass,用GetClassName判断枚举窗口是否为IE窗口,再查找地址栏后用GetWindowText就可以了。
var
str1:array[0..255] of char;
str:pchar;
HWnd1,cal: HWnd;
begin
HWnd1 := FindWindow('IEFrame',nil );
cal :=findwindowex(hwnd1,0,'edit',nil);
SendMessage(cal,WM_GETTEXT,127,integer(@str1));
showmessage(str1);
end;
为什么我的cal拿不到句柄的?我用的ie6.0就是ieframe类,地址栏就是edit类!
hwnd1能返回值,但是cal就为0
var
h: THandle;
s: Pchar;
begin
getMem(s,255);
h := WindowFromPoint(Mouse.CursorPos);
SendMessage(h,WM_GETTEXT,255,Longint(lpstr(s)));
showmessage(s);
FreeMem(s,255);
end;