NPAPI DLLを使用するGoogle Chromeの拡張機能を作成しています。 NPAPI DLLのinvokeメソッドでは、私は、JavaScriptコンソールにメッセージを印刷するために、次のコードを挿入した:NPAPI DLLからJavascript APIを呼び出す
char* message = "Hello from C++";
// Get window object.
NPObject* window = NULL;
npnfuncs->getvalue(thisObj->npp, NPNVWindowNPObject, &window);
// Get console object.
NPVariant consoleVar;
NPIdentifier id = npnfuncs->getstringidentifier("console");
npnfuncs->getproperty(thisObj->npp, window, id, &consoleVar);
NPObject* console = NPVARIANT_TO_OBJECT(consoleVar);
// Get the debug object.
id = npnfuncs->getstringidentifier("log");
//console.
// Invoke the call with the message!
NPVariant type;
STRINGZ_TO_NPVARIANT(message, type);
NPVariant args[] = { type };
NPVariant voidResponse;
bool didRun = npnfuncs->invoke(thisObj->npp, console, id, args, sizeof(args)/sizeof(args[0]), &voidResponse);
if (!didRun) assert(false);
// Cleanup all allocated objects, otherwise, reference count and
// memory leaks will happen.
npnfuncs->releaseobject(window);
npnfuncs->releasevariantvalue(&consoleVar);
npnfuncs->releasevariantvalue(&voidResponse);
何もコンソールに出力せず、どちらもアサート失敗してきています。 console.logステートメントに問題があるかどうかはわかりません。なぜなら、他のjavascriptファイルで使用しても何も表示されないからです。代わりにalert("Hello, world!")
のようなステートメントを使用したいと思います。 x.y()
という形式の関数を呼び出すようにコードを変更できますが、警告ボックスを表示するにはどのようにすればいいのか分かりません。私はチュートリアルを以下のlinkで使用しました。 NPAPI DLLから呼び出されるアラートボックスを表示するにはどうすればよいですか?
編集:window.alert("")
フォーム(X.Y() form
)を使用してアラートを呼び出すことはできますが、これで問題は解決しません。私はまだNPAPIからタイプX()
の機能をどのように呼び出すべきか理解していません。