请问在一个有多个Frames的网页中,如何取得任何一个Frames中的TEXT的值??
最好有源码。

解决方案 »

  1.   

    save all TWebbrowser Frame Sources?  uses 
      ActiveX; function TForm1.GetFrame(FrameNo: Integer): IWebbrowser2; 
    var 
      OleContainer: IOleContainer; 
      enum: IEnumUnknown; 
      unk: IUnknown; 
      Fetched: PLongint; 
    begin 
      while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do 
        Application.ProcessMessages; 
      if Assigned(Webbrowser1.document) then 
      begin 
        Fetched := nil; 
        OleContainer := Webbrowser1.Document as IOleContainer; 
        OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum); 
        Enum.Skip(FrameNo); 
        Enum.Next(1, Unk, Fetched); 
        Result := Unk as IWebbrowser2; 
      end 
      else 
        Result := nil; 
    end; // Load sample page 
    // Testseite laden 
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      Webbrowser1.Navigate('http://www.warebizprogramming.com/tutorials/html/framesEx1.htm'); 
    end; // Save all frames in single files 
    // Alle Frameseiten in einzelne Dateien speichern 
    procedure TForm1.Button2Click(Sender: TObject); 
    var 
      IpStream: IPersistStreamInit; 
      AStream: TMemoryStream; 
      iw: IWebbrowser2; 
      i: Integer; 
      sl: TStringList; 
    begin 
      for i := 0 to Webbrowser1.OleObject.Document.frames.Length - 1 do 
      begin 
        iw := GetFrame(i); 
        AStream := TMemoryStream.Create; 
        try 
          IpStream := iw.document as IPersistStreamInit; 
          if Succeeded(IpStream.save(TStreamadapter.Create(AStream), True)) then 
          begin 
            AStream.Seek(0, 0); 
            sl := TStringList.Create; 
            sl.LoadFromStream(AStream); 
            sl.SaveToFile('c:\frame' + IntToStr(i) + '.txt'); 
            //  memo1.Lines.LoadFromStream(AStream); 
            sl.Free; 
          end; 
        except 
        end; 
        AStream.Free; 
      end; 
    end; end. 
      

  2.   

    我问的是在一个打开的IE窗口中如何取得任一个Frames中的TEXT的值?不是自己建的Webbrowser1
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      IEApp,Docs,oIFrame,ovElements: OLEVariant;
      i: integer;
    begin
      IEApp := CreateOLEObject('InternetExplorer.Application');
      IEApp.Visible := True;
      IEApp.Navigate('http://www.xxx.com');
      while IEApp.ReadyState < READYSTATE_COMPLETE do
        Application.ProcessMessages;  Docs := IEApp.Document;
      oIFrame := Docs.Frames.item(0); //第一個Frame
    //-- <input type="text" name=myName ID="myName">  //若有ID名
      ovElements := oIFrame.Document.GetElementByID('myName');
      Edit1.Text := ovElements.Value;
    end;
      

  4.   

    cronuz(cronus):
      我如何得到  'http://www.xxx.com' 这个网址呢?
    我想做的是当把鼠标移到系统IE上时,能够得到上面TEXT的值。没有Frames的网页,我已经解决了,
    可是有Frames的,该怎么取???