0

HTML全体をMSHTMLに設定するには?

私はこの割り当てを使用しようとしています:

   (Document as IHTMLDocument3).documentElement.innerHTML := 'abc';  

しかし、私はエラーが発生しました:

「この操作のターゲット要素は無効です」

私も使ってみました

(Document as IHTMLDocument2).write 

しかし、このフォームは本文セクションに HTML を追加するだけなので、すべての HTML ソースを置き換える必要があります。
誰かが私がこれを行う方法を知っていますか?

前もって感謝します。

4

2 に答える 2

1

これが私の古いコードの一部です。役立つかどうかを確認してください。

type
  THackMemoryStream = class(TMemoryStream);

procedure Clear(const Document: IHTMLDocument2);
begin
  Document.write(PSafeArray(VarArrayAsPSafeArray(VarArrayOf([WideString('')]))));
  Document.close;
end;

procedure LoadFromStream(const Document: IHTMLDocument2; Stream: TStream);
var
  Persist: IPersistStreamInit;
begin
  Clear(Document);
  Persist := (Document as IDispatch) as IPersistStreamInit;
  OleCheck(Persist.InitNew);
  OleCheck(Persist.Load(TStreamAdapter.Create(Stream)));
end;

procedure SetHtml(const Document: IHTMLDocument2; const Html: WideString);
var
  Stream: TMemoryStream;
begin
  Stream := TMemoryStream.Create;
  try
    THackMemoryStream(Stream).SetPointer(PWideChar(Html), (Length(Html) + 1) * SizeOf(WideChar));
    Stream.Seek(0, soFromBeginning);
    LoadFromStream(Document, Stream);
  finally
    Stream.Free;
  end;
end;
于 2010-03-20T14:31:45.550 に答える
0

別の方法として、Webブラウザーの拡張ラッパーであり、この機能を提供するいくつかの使いやすいメソッドを備えたTEmbededWBを使用することもできます。

于 2010-03-22T16:12:02.207 に答える