gpt4 book ai didi

delphi - 尝试编辑 IHTMLDocument 会挂起应用程序

转载 作者:行者123 更新时间:2023-12-02 19:42:24 26 4
gpt4 key购买 nike

基于 IHTMLDocument2 的 MSHTML 文档,我正在尝试编写简单的 HTML 解析器。不幸的是,尝试设置编辑模式失败,换句话说,resultState 永远不会获得“完整”值,因此应用程序挂起。

{$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.

只是好奇为什么 IHTMLDocument2 接口(interface)的 readyState 属性从未设置为“完整”,尽管基于官方文档它应该设置为“完整”?

最佳答案

readyState 属性未设置为'complete',因为您尚未告诉 IHTMLDocument2 对象实际加载文档。您必须加载一个文档,即使是空白文档(即:'about:blank' URL),才能影响 readyState 属性,否则它将保持其状态'uninitialized' 的初始值。

关于delphi - 尝试编辑 IHTMLDocument 会挂起应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8663167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com