質問

私はNPAPIプラグインに文字列の配列を渡すしたいと思います。どのように私は、文字列の配列に NPVariant に変換するのですか?

役に立ちましたか?

解決

あなたはjldupontが提案したものから、他のdiretctionを行っているように見えます。あなたは、プロパティまたはメソッドのいずれかへのパラメータとして配列を渡すときます:

var arrayData = [1,2,3,4,5];
plugin.someProperty = arrayData;
// -or-
plugin.callSomeMethod(arrayData);

そのパラメータは、タイプNPVariantType_ObjectのNPVariantとしてあなたNPObjectになります。あなたはその後、lengthプロパティを照会します:

NPObject *inObject = val->value.objectValue;
NPVariant npvLength;
NPN_GetProperty(npp, inObject, NPN_GetStringIdentifier("length"), &npvLength);

、その後、あなただけのすべての値を取得するためにforループを実行します。

for (uint32_t i = 0; i < npvLength.value.intValue; i++) {
    NPVariant curValue;
    NPN_GetProperty(npp, inObject, NPN_GetIntIdentifier(i), &curValue);
    // Do something with curValue
}
あなたはJavaScriptに配列を返す必要がある場合は、

同様に、(私はにリンクされているjldupontスレッドで提案されているように、オブジェクトをエミュレートする方法を書く以外の)別のオプションは、DOMのためNPObjectを取得するためにNPN_GetValueを使用することです窓、その後、パラメータなしでそれの「アレイ」を起動します。これは、(NPObject *など)、空のJSのArrayオブジェクトを返します。次に、あなたが最初の(そして唯一の)パラメータとしてアイテムに「プッシュ」を返し、呼び出したい項目を通してだけループます。

ホープ、このことができます。

他のヒント

あなたはNPObject(このスレッドを使用することができますを)ずっとvar arrayOfString={...strings here...}とJSのオブジェクトと同じように(あなたの文字列のコンテナとして機能します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top