请教:

解决方案 »

  1.   

    这是从网上找到的,希望对你有帮助!
    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.   

    1.用IShellWindows
    2.用GetWindow枚举窗口,因为Ie窗口类是IEFrame或CabinetWClass,用GetClassName判断枚举窗口是否为IE窗口,再查找地址栏后用GetWindowText就可以了。
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    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
      

  4.   

    procedure TForm1.Timer1Timer(Sender: TObject);
    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;