WebBrowser コンポーネントからソース コードを取得するにはどうすればよいですか?
WebBrowser コンポーネントでアクティブなページのソース コードを取得し、Memo コンポーネントに書き込みます。
ありがとう。
WebBrowser コンポーネントからソース コードを取得するにはどうすればよいですか?
WebBrowser コンポーネントでアクティブなページのソース コードを取得し、Memo コンポーネントに書き込みます。
ありがとう。
IPersistStreamInit
Interface と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;
それもうまくいきます:
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;
これは Embarcadero フォーラムで何度も質問され、回答されており、多くのコード例が投稿されています。アーカイブを検索します。
その要点はNavigate()
、目的の URL に移動し、OnDocumentComplete
イベントが発生するのを待ってから、インターフェイスQueryInterface()
のDocument
プロパティとそのメソッドIPersistStreamInit
を呼び出すことです。などのオブジェクト インスタンスをsave()
作成し、それをオブジェクトでラップしてから、アダプタを に渡します。その後、必要に応じて を にロードできます。TStream
TMemoryStream
TStreamAdapter
save()
TStream
TMemo