13

WebBrowser コンポーネントからソース コードを取得するにはどうすればよいですか?

WebBrowser コンポーネントでアクティブなページのソース コードを取得し、Memo コンポーネントに書き込みます。

ありがとう。

4

4 に答える 4

20

IPersistStreamInitInterface とsaveメソッドを使用して、Webbrowser のコンテンツを Stream に保存できます。

Uses 
  ActiveX;

function GetWebBrowserHTML(const WebBrowser: TWebBrowser): String;
var
  LStream: TStringStream;
  Stream : IStream;
  LPersistStreamInit : IPersistStreamInit;
begin
  if not Assigned(WebBrowser.Document) then exit;
  LStream := TStringStream.Create('');
  try
    LPersistStreamInit := WebBrowser.Document as IPersistStreamInit;
    Stream := TStreamAdapter.Create(LStream,soReference);
    LPersistStreamInit.Save(Stream,true);
    result := LStream.DataString;
  finally
    LStream.Free();
  end;
end;
于 2012-04-10T15:40:38.960 に答える
5

それもうまくいきます:

    uses MSHTML;

    function GetHTML(w: TWebBrowser): String;
    Var
      e: IHTMLElement;
    begin
      Result := '';
      if Assigned(w.Document) then
      begin
         e := (w.Document as IHTMLDocument2).body;
    
         while e.parentElement <> nil do
         begin
           e := e.parentElement;
         end;
    
         Result := e.outerHTML;
      end;
    end;
于 2013-03-18T19:25:00.617 に答える
3

これは Embarcadero フォーラムで何度も質問され、回答されており、多くのコード例が投稿されています。アーカイブを検索します。

その要点はNavigate()、目的の URL に移動し、OnDocumentCompleteイベントが発生するのを待ってから、インターフェイスQueryInterface()DocumentプロパティとそのメソッドIPersistStreamInitを呼び出すことです。などのオブジェクト インスタンスをsave()作成し、それをオブジェクトでラップしてから、アダプタを に渡します。その後、必要に応じて を にロードできます。TStreamTMemoryStreamTStreamAdaptersave()TStreamTMemo

于 2012-04-10T15:40:25.607 に答える