0

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()の機能をどのように呼び出すべきか理解していません。

答えて

0

見つけた!タイプX()の関数を呼び出す特定のメソッドが見つかりませんでした。代わりに、私はwindow.X()という名前で、拡張機能のbackground.htmlページに関数X()の定義を置くことで呼び出すことができました。したがって、関数function myAlert(message){alert(message);}を作成してbackground.htmlに配置すると、NPAPIからwindow.myAlert(argument)を呼び出して上記の関数が呼び出されます。

関連する問題