この投稿で説明されているように、インターフェイスのインスタンスを使用してIHTMLDocument2
HTML を解析しています。
IPersistMoniker からの読み込みで、解決できない URL の読み込みに時間がかかる
コードは比較的単純です。
DelphiInterface<IHTMLDocument2> diDoc2;
HRESULT hr = CoCreateInstance(CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER, IID_IHTMLDocument2, (LPVOID*)&diDoc2);
// Load and process HTML here and save into memory stream or to disk after the processing is done
完了したら、上記で新しく変更した HTML コンテンツを保存し、HTML を にdiDoc2
ロードしますTWebBrowser
。
代わりに、上記で既に解析された を に含まれている に
IHTMLDocument2
直接「割り当てる」ことができますか?これは、はるかに高速な方法のようです。おそらくまたは他の方法を使用してそうすることができますが、最初に可能であれば、既に初期化されたオブジェクトにポインターを割り当てるよりもパフォーマンスが低下する可能性があります。言い換えれば、ソートの「バックバッファー」で解析したばかりのものを「表示」/「レンダリング」したいだけです。IHTMLDocument2
TWebBrowser
IHTMLDocument2.write
CoInitialize
電話のCoUninitialize
前後に電話する必要はありCoCreateInstance
ますか?それを行うコードを見たことがありますが、Delphi/C++ Builder が内部で初期化を行わない限り、それがなくても機能します。