IHTMLDocument2のMSHTMLドキュメントに基づいて簡単なHTMLパーサーを作成しようとしています。 残念ながら、編集モードを設定しようとすると失敗します。つまり、resultStateは、アプリケーションがハングするように「完了」値を取得しません。それは公式ドキュメントでなければならないベースがIHTMLDocument2インターフェイスののreadyStateプロパティは、「完全」に設定されることはありません、なぜIHTMLDocumentを編集しようとするとアプリケーションがハングする
{$APPTYPE CONSOLE}
function ParseHtml(doc: TStringList): TStringList;
var
iHtml: IHTMLDocument2;
v: Variant;
msg: tagMSG;
begin
iHtml := CreateComObject(CLASS_HTMLDocument) as IHTMLDocument2;
Result := TStringList.Create;
try
try
iHtml.designMode := 'on';
while iHtml.readyState <> 'complete' do
PeekMessage(msg, 0, 0, 0, PM_NOREMOVE);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// above loop never finishes
v := VarArrayCreate([0, 0], varVariant);
v[0] := doc.Text;
iHtml.write(PSafeArray(TVarData(v).VArray));
iHtml.designMode := 'off';
while iHtml.readyState <> 'complete' do
PeekMessage(msg, 0, 0, 0, PM_NOREMOVE);
// processing iHtml.body
...
except
...
end;
finally
...
end;
...
end;
begin
CoInitialize(nil);
...
CoUninitialize;
end.
興味があるだけ?