Muss ich die NPN-Funktionen selbst implementieren?
-
11-12-2019 - |
Frage
Ich habe meine Header-Dateien von: http://code.google.com/p/npapi-sdk/source/browse/?r=7#svn%2Fwiki
Daher habe ich in der Initialize-Methode einen Zeiger auf alle NPN-Methoden des Browsers gespeichert
static NPNetscapeFuncs* browser;
NPError NP_Initialize(NPNetscapeFuncs* browserFuncs)
{
/* Save the browser function table. */
browser = browserFuncs;
return NPERR_NO_ERROR;
}
Wenn ich meine NPClass-Struktur erstelle, sollte ich ihr einfach die bereits vorhandenen Browserfunktionen wie folgt zuweisen:
struct NPClass class;
class.hasMethod = browser-> hasmethod;
etc.
Oder muss ich die Funktionen im npruntimeheader mithilfe der Browserfunktionen implementieren und sie auf diese Weise der Klasse zuweisen?Beispiel:class.hasMethod = NPN_HasMethod;
Und implementieren Sie dann die folgende Funktion:
bool NPN_HasMethod(NPP npp, NPObject *npobj, NPIdentifier methodName)
{
return browser->hasmethod(npp, npobj, methodName);
}
Oder sind die NPN-Funktionen im Runtime-Header schon irgendwie implementiert?
Ich muss das in C schreiben, und ich glaube nicht, dass die Verwendung von Firebreath für dieses spezielle Projekt eine gute Idee wäre.Vielen Dank im Voraus für Ihre Hilfe
Lösung
Sie müssen die Funktionen für Sie implementieren NPClass
Wenn Sie es selbst tun, definieren sie das Verhalten Ihrer skriptfähigen Objekte. Teil drei Das NPAPI-Tutorial von Taxilians behandelt dies.
Die Funktionen, die Sie über die erhalten browser
Funktionstabellen dienen zum Aufruf in den Browser (und sind dort bereits implementiert), z.B.um Informationen darüber zu erhalten NPObject
s mit hasmethod
usw.
Allerdings mögen die Funktionsdeklarationen NPN_HasMethod()
müssen von Ihnen implementiert werden, wenn Sie sie verwenden möchten. Im einfachsten Fall rufen Sie einfach die entsprechenden Funktionen auf browser
wie du mit gezeigt hast HasMethod()
.