以下过程适用于Windows XP,7-32,7-64,8-32,8-64,其中IE 8到11的版本不适用于新的Windows 10,请参阅代码:
@item.shoes?
try
IDoc := CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
IDoc.Write(PSafeArray(VarArrayAsPSafeArray(VarArrayOf([xHtml])))); //Error windows 10
IDoc.Close;
except
on E: Exception do
begin
//E.ClassName = EOleException
//E.Message = Unspecified error
end;
end;
是一个包含HTML xHtml
我也尝试用这种方式编写IHTMLDocument2,但也有同样的错误:
"<html>...</html>"
我还检查了Windows 10中是否有IDoc := CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
v := VarArrayCreate([0, 0], VarVariant);
v[0] := xHtml;
IDoc.Write(PSafeArray(TVarData(v).VArray));
IDoc.Close;
,并且有。
答案 0 :(得分:1)
我在使用XE8的Win10 64位上尝试了两个例子。
try
IDoc := CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
IDoc.Write(PSafeArray(VarArrayAsPSafeArray(VarArrayOf([xHtml])))); //Error windows 10
IDoc.Close;
except
on E: Exception do
begin
//E.ClassName = EOleException
//E.Message = Unspecified error
end;
end;
和
IDoc := CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
v := VarArrayCreate([0, 0], VarVariant);
v[0] := xHtml;
IDoc.Write(PSafeArray(TVarData(v).VArray));
IDoc.Close;
并且都执行而不引发任何异常。所以看起来这个问题是特定于你的系统的,如果是的话,这个q应该是关闭的。
Fwiw,以下代码也可以正常使用
procedure LoadWBFromString(WB : TWebBrowser; const S : String);
var
Doc : IHtmlDocument2;
V : OleVariant;
begin
if WB.Document = nil then
WB.Navigate('about:blank');
Doc := WB.Document as IHTMLDocument2;
V := VarArrayCreate([0, 0], varVariant);
V[0] := S;
Doc.Write(PSafeArray(TVarData(v).VArray));
Doc.Close;
end;
procedure TForm1.LoadWB;
begin
LoadWBFromString(WebBrowser1, Memo1.Lines.Text);
end;
并正确显示WebBrowser1中Memo1.Text的最小HTML文档。
答案 1 :(得分:0)
我发现问题只是关键字“FEATURE_BROWSER_EMULATION”因为我在Windows 10中注册使用旧版本的IE时发生此错误,它只删除了与我的应用程序相关的关键字“FEATURE_BROWSER_EMULATION”,它开始在Windows 10中运行,我要做的是检查Windows的版本,只在旧版本中注册密钥,感谢所有的提示,我只能通过评论找到问题。
我正在录制的密钥:“Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION”
价值:4270841