0

NPAPI DLL을 사용하는 Chrome 용 확장 프로그램을 작성 중입니다.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); 

아무것도 콘솔에 인쇄되지지고, 그리고 둘 다 실패 어설는 없습니다 다음 NPAPI DLL의 호출 방법, 나는 자바 스크립트 콘솔에 메시지를 인쇄하려면 다음 코드를 삽입했습니다. 나는 다른 javascript 파일과 함께 사용할 때조차 아무 것도 인쇄하지 않으므로 내 console.log 문에 문제가 있는지 확실하지 않습니다. 대신 alert("Hello, world!") 같은 진술을 사용하고 싶습니다. x.y() 형식의 함수를 호출하도록 코드를 수정할 수는 있지만 경고 상자를 표시하는 방법을 이해할 수 없습니다. 나는 link에서 튜토리얼을 사용했다. NPAPI DLL에서 호출 된 경고 상자를 표시하려면 어떻게해야합니까?

편집 : window.alert("") 양식 (X.Y() form)을 사용하여 알림을 호출 할 수 있지만 문제가 해결되지 않습니다. 나는 아직도 NPAPI에서 직접 X() 유형의 함수를 호출해야하는지 이해할 수 없다.

답변

0

발견! 유형이 X() 인 함수를 호출하는 특정 메소드를 찾을 수 없습니다. 대신, 확장자의 background.html 페이지에 함수 X()의 정의를 삽입하여 window.X()으로 호출 할 수있었습니다. 그래서, 만약 내가 함수 function myAlert(message){alert(message);}을 만들고 background.html에두면, NPAPI에서 window.myAlert(argument)을 호출 할 수 있었고 위의 함수가 호출되었습니다.

관련 문제