1

WebkitコントロールをWindows(c ++)アプリケーションに埋め込んで、JavaScriptがアクセスできるようにカスタムオブジェクトを登録しました(JSGlobalContextRef、JSObjectMakeなどを使用)。stringまたはintを返す単純なメソッドについて、JavaScriptからc++レイヤーへの呼び出しを正常にテストしました。

ここで、COMライブラリを内部的に使用し、最終的にIDispatchポインタ(VARIANTまたはその他としてラップされている)を返す1つのカスタムメソッドを公開したいと思います。IDispatchポインターをJSValueRef、JSObjectRef、またはJavaScript(Webkit内)が理解できるその他のものに変換するにはどうすればよいですか?

IEブラウザー制御の世界では、「getExternal」(IDocHostUIHandlerインターフェース)を介してIDispatchを公開するか、VARIANTでラップして、カスタム「external」オブジェクト内の他のAPIのOut-Paramとして返すことができます。

4

1 に答える 1

0

この質問には、簡単なnステップの答えはありません。Google検索で、SpiderMonkeyからCOMオブジェクトにアクセスするという同様の問題に対処するコードを見つけました。私はあなたが取るかもしれないアプローチ、私がもはやリンクを持っていない実際のコードをあなたに与えることができます、そしてそれはとにかくSpiderMonkey特有です。

Javascriptエンジンには、明らかにすでに使用しているカスタムオブジェクトで拡張するためのいくつかの手段があります。実装しているこの新しいメソッドがさらに別のタイプのカスタムオブジェクトを返すことを定義し、そのカスタムオブジェクトのカスタムデータにIDispatchポインターを配置する必要があります。JSエンジンは、カスタムオブジェクトがActiveXオブジェクトのファサードであることを「理解」または気にしません。このタイプのカスタムオブジェクトを設定するだけで、Frobメソッドが呼び出されたときに、ファサードがIDispatchのFrobDISPIDに呼び出しを委任します。

この答えが不明確な場合は、少なくとも同じ言語を話しているという手がかりを教えてください。

于 2012-08-17T20:51:14.873 に答える