如何用程序实现:获得打开网页的内容(假设网页内就一行文字)。

解决方案 »

  1.   

    get the HTML Code out of all Internet Explorer Instances?  uses 
     MSHTML_TLB, ActiveX; 
    function GetHTMLCode(WB: IWebbrowser2; ACode: TStrings): Boolean; 
    var 
     ps: IPersistStreamInit; 
     s: string; 
     ss: TStringStream; 
     sa: IStream; 
    begin 
     ps := WB.document as IPersistStreamInit; 
     s := ''; 
     ss := TStringStream.Create(s); 
     try 
       sa:= TStreamAdapter.Create(ss, soReference) as IStream; 
       Result := Succeeded(ps.Save(sa, Bool(True))); 
       if Result then ACode.Add(ss.Datastring); 
     finally 
       ss.Free; 
     end; 
    end; procedure TForm1.Button1Click(Sender: TObject); 
    var 
     ShellWindow: IShellWindows; 
     WB: IWebbrowser2; 
     spDisp: IDispatch; 
     IDoc1: IHTMLDocument2; 
     k: Integer; 
    begin 
     ShellWindow := CoShellWindows.Create; 
     // get the running instance of Internet Explorer 
     for k := 0 to ShellWindow.Count do 
     begin 
       spDisp := ShellWindow.Item(k); 
       if spDisp = nil then Continue; 
       // QueryInterface determines if an interface can be used with an object 
       spDisp.QueryInterface(iWebBrowser2, WB); 
       if WB <> nil then 
       begin 
         WB.Document.QueryInterface(IHTMLDocument2, iDoc1); 
         if iDoc1 <> nil then 
         begin 
           WB := ShellWindow.Item(k) as IWebbrowser2; 
           begin 
             // Add HTML Code to Memo 
             Memo1.Lines.Add('****************************************'); 
             Memo1.Lines.Add(WB.LocationURL); 
             Memo1.Lines.Add('****************************************'); 
             GetHTMLCode(WB, Memo1.Lines); 
           end; 
         end; 
       end; 
     end; 
    end;