0

ATL を使用して記述した ActiveX コントロールがあり、やや深刻で紛らわしい問題に直面しています。iDispatch::Invoke が DISPATCH_PROPERTYPUT/METHOD で呼び出されると、すべて問題ありません。IE javascript に値を返すと、有効な BSTR を使用して VT_BSTR のメソッドを呼び出した後、正常に動作します。

しかし、私がしようとすると:

var stringValue = Object.stringValue;

DISPATCH_PROPERTYGET フラグで呼び出された iDispatch を呼び出し、有効な BSTR (メソッド呼び出しで使用するものとまったく同じ) を使用して戻り値を VT_BSTR に設定すると、IE でアクセス許可拒否エラー ボックスが表示されます。

他のさまざまなデータ型 (long、integer、bool など) を IE javascript に返すと、正常に動作します (propertyGet() メソッドを使用)。VT_BSTR を返すときにのみアクセス許可が拒否されます。

何か案は?

4

1 に答える 1

0

上記のコメントでは、c を BSTR にキャストしています。c とは何ですか? 実際にSysAllocString()を呼び出して BSTR を作成していない場合、それが問題の原因である可能性が非常に高くなります。

プロセスを支援するために CComBSTR または CComVARIANT を使用することを検討してください

于 2009-11-16T16:08:05.260 に答える