2

IE6、7、8、および9 ベータ版では動作するが、IE9 RC ではクラッシュする動作コードがあります。Web ページが ActiveX のインターフェイスを正常に使用していることがわかりますが、ActiveX から IDispatch::Invoke を呼び出そうとすると、ActiveX がクラッシュします。

私のアプリケーションは、CHtmlView (IE コンテナー)、Web ページ (GUI)、および ActiveX (アプリケーション自体) から構成されています。Web ページが ActiveX のインターフェイスを正常に使用していることがわかりますが、データを Web ページに送り返そうとするとクラッシュします。

コード (vs2005 c++) をデバッグした後、すべての IDispatch 関数がクラッシュを引き起こすことがわかりましたが、この動作は RC バージョンでのみ再現されます。当社の製品は、すでに 3 年間問題なく動作しており、RC にアップグレードするすべてのクライアント当社の製品を使用することはできません。

そのような動作を引き起こす可能性のある変更はありましたか? オンラインのドキュメントによると、何も見つかりませんでした。ありがとう。

4

2 に答える 2

1

面倒な苦労の末、答えを見つけました(2年前)。当時、私は IE9 フォーラムでの質問を閉じましたが、このスレッドを閉じるのを忘れていました。

思い出させてくれてありがとう@Paul Sweatte。

私たちのフレームワークは次のように機能しました。

  1. ActiveX と Web には、「onStart」、「onPause」などの一連の既知の文字列がありました...
  2. Web は関数をエンジンに登録します。
  3. activex は、必要に応じてコールバックを呼び出します。

2 番目の部分は問題でした。明らかに古い IE バージョンでは、javascript eval 関数が IDispatch オブジェクトを作成し、そのオブジェクトを activex に渡すことができました。

IE9 では、他の多くの変更とともにこれも変更され、eval は別のものを返すようになりました。

クラッシュは、activex がコールバックを実行しようとしたときに発生します。それは...デバッグが非常に困難でした。

于 2013-10-06T07:29:40.873 に答える