1

HTML ドキュメントのデータを解析するために使用しているアプリケーションがあります。アプリケーションは、IID_IPersistStreamInit の QueryInterface メソッドが失敗し始めた今週まで、数年間動作していました。QueryInterface への呼び出しは -2147467262 を返し、SUCCEEDED(hr) テストに失敗します。これが機能しなくなった理由はありますか?

ありがとう、ウェイド

if (!myIE->IsValid())
   return;

HRESULT hr;
LPDISPATCH lpDispatch = NULL;
LPOLECOMMANDTARGET lpOleCommandTarget = NULL;
LPPERSISTSTREAM lpPersistStream = NULL;

lpDispatch = myIE->GetHtmlDocument(); 

ASSERT(lpDispatch);

if (lpDispatch == NULL)
  AfxMessageBox("Couldn't get IHTMLDocument2 interface!");    
else
{ 
   hr = lpDispatch->QueryInterface(IID_IPersistStreamInit, (void**) &lpPersistStream);
   if (SUCCEEDED(hr) && lpPersistStream != NULL)
4

1 に答える 1

0

上記のコードをどの時点で実行していますか? 完了していない場合は、次の後にのみ実行する必要があります。

  1. about:blank に移動して mshtml を適切にロードする
  2. 次に進む前に、DocumentComplete イベントが呼び出されていることを確認してください。これは、ナビゲーションが完了したことを意味します。

その場合にのみ、ストリーム インターフェイスを要求しても安全です。詳細については、ストリームから HTML コンテンツをロードするを参照してください。

さて、これがすべてわかっていて対処できれば、別の方向から解決策を追求することができます。エラー コードは、「そのようなインターフェイスはサポートされていません」という意味です。そのインターフェイスを含むコンポーネントが何であるかを調べてから、再登録します。しかし、これがあなたが扱っているIEのものであることを考えると、インストールが失敗したのではないかと思います.

于 2009-10-13T21:13:37.353 に答える