0

次の手順は、Windows XP、7-32、7-64、8-32、8-64、および IE 8 から 11 のバージョンで機能しますが、新しい Windows 10 では機能しません。コードを参照してください。

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;

xHtmlHTMLを含む文字列です"<html>...</html>"

また、この方法で IHTMLDocument2 を記述しようとしましたが、同じ間違いがありました:

IDoc := CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
v := VarArrayCreate([0, 0], VarVariant);
v[0] := xHtml;
IDoc.Write(PSafeArray(TVarData(v).VArray));
IDoc.Close;

またmshtml.dll、Windows 10 に があるかどうかを確認しました。

4

2 に答える 2

1

XE8を使用してWin10 64ビットで2つの例を試しました。

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 ドキュメントを正しく表示します。

于 2015-08-19T08:12:12.390 に答える
0

Windows 10 で古いバージョンの IE で動作するように登録したため、問題はキー「FEATURE_BROWSER_EMULATION」だけであることがわかりました。 Windows のバージョンを確認し、古いバージョンのキーのみを登録します。すべてのヒントのおかげで、コメントから問題を見つけることしかできませんでした。

私が記録していたキー: "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"

値: 4270841

于 2015-08-19T15:21:17.077 に答える