1

js-ctypes を利用する拡張機能を作成しました。Cライブラリ関数を使用してjs-ctypesによってバインドされた拡張機能に関数があります。ここで、Web ページから読み込まれたデータを、拡張機能 (js-ctypes) を介してこの C ライブラリに渡したいと思います。どうすればいいのですか ?

私は出会いました - https://developer.mozilla.org/en-US/docs/Code_snippets/Interaction_between_privileged_and_non-privileged_pa​​ges。メッセージ、つまり文字列が渡される部分を理解しましたが、Web ページから拡張機能の js-ctypes バインド関数にデータを渡すにはどうすればよいですか?

正確には、Web ページの js スクリプトで配列を割り当てています。いくつかのデータを入力します。ここで、この配列/データを C ライブラリ関数に送信する必要があります。つまり、このデータを使用して C ライブラリ関数を呼び出します。

4

1 に答える 1

2

拡張機能と通信し、データを JSON として送信します (配列が間違ってシリアル化される場合があります)。

たとえば、イベントを送信できます。

var obj = JSON.stringify({arg1: 3, arg2: "some text"});
var event = new CustomEvent("YourAddonEvent", { detail: obj });
top.dispatchEvent(event);

拡張機能では JSON を解析し、引数を持つオブジェクトを取得します。

var args = JSON.parse(event.detail);

ライブラリをロードして関数を宣言した後、例:

var func = lib.declare("YourFuncName", ctypes.default_abi, ctypes.int, ctypes.int, ctypes.char.ptr, );

関数を呼び出すことができます:

var result = func(args.arg1, args.arg2);
于 2012-12-20T07:46:33.250 に答える