到目前为止,我看到每个.dll
文件只能有一个插件,那是对的吗?浏览器调用NP_GetEntryPoints
,NP_Initialize
和NP_Shutdown
只有“一次”每个DLL,对吧?我可以使用NPAPI在一个DLL中创建多个插件吗?
我的目标是在一个动态库中创建多个插件。这是可能的,如果,如何?
到目前为止,我看到每个.dll
文件只能有一个插件,那是对的吗?浏览器调用NP_GetEntryPoints
,NP_Initialize
和NP_Shutdown
只有“一次”每个DLL,对吧?我可以使用NPAPI在一个DLL中创建多个插件吗?
我的目标是在一个动态库中创建多个插件。这是可能的,如果,如何?
到目前为止,我所看到的每个.dll文件只能有一个插件,是正确的吗?
不,您可以在一个DLL中实现多个插件。
浏览器每个dll只调用一次“NP_GetEntryPoints”,NP_Initialize和NP_Shutdown,对不对?
每个进程和加载只有一次(记住当没有实例存活时它将被卸载)。
我想要的是在一个动态库中创建多个插件。这是可能的,如果,如何?
这是可能的。您只需为相同的动态库注册不同的mimetypes(例如,在Windows上注册表中指向同一个DLL的多个mimetype条目)。
NPP_New()
得到一个NPMIMEType
,因为它是第一个参数,它让我们确定哪个“插件”被请求。
此外,需要调整NP_GetMIMEDescription()
(用于Linux和Mac OS)。
在Windows上,您应该有版本信息(条目MIMEType
)中的mimetypes列表,由|
分隔。
何时/何时调用NP_GetMIMEDescription?我可以看到[docs](https://developer.mozilla.org/en/NP_GetMIMEDescription),但没有关于在哪里实现该功能。 – 2012-01-16 15:06:20
@Niklas:*“它适用于Unix(Linux)和MacOS。”* – 2012-01-16 15:20:05
如果你还没有偶然发现,请看看[Firebreath](http://firebreath.org)是否适合你的项目。 – 2012-01-16 15:03:32
即使FireBreath不适合您的项目,它也支持多种mimetypes - 您可以创建一个firebreath插件并挖掘它是如何做到的。 – taxilian 2012-01-16 19:37:54