2012-01-16 55 views
1

到目前为止,我看到每个.dll文件只能有一个插件,那是对的吗?浏览器调用NP_GetEntryPointsNP_InitializeNP_Shutdown只有“一次”每个DLL,对吧?我可以使用NPAPI在一个DLL中创建多个插件吗?

我的目标是在一个动态库中创建多个插件。这是可能的,如果,如何?

+1

如果你还没有偶然发现,请看看[Firebreath](http://firebreath.org)是否适合你的项目。 – 2012-01-16 15:03:32

+1

即使FireBreath不适合您的项目,它也支持多种mimetypes - 您可以创建一个firebreath插件并挖掘它是如何做到的。 – taxilian 2012-01-16 19:37:54

回答

1

到目前为止,我所看到的每个.dll文件只能有一个插件,是正确的吗?

不,您可以在一个DLL中实现多个插件。

浏览器每个dll只调用一次“NP_GetEntryPoints”,NP_Initialize和NP_Shutdown,对不对?

每个进程和加载只有一次(记住当没有实例存活时它将被卸载)。

我想要的是在一个动态库中创建多个插件。这是可能的,如果,如何?

这是可能的。您只需为相同的动态库注册不同的mimetypes(例如,在Windows上注册表中指向同一个DLL的多个mimetype条目)。

NPP_New()得到一个NPMIMEType,因为它是第一个参数,它让我们确定哪个“插件”被请求。

此外,需要调整NP_GetMIMEDescription()(用于Linux和Mac OS)。

在Windows上,您应该有版本信息(条目MIMEType)中的mimetypes列表,由|分隔。

+0

何时/何时调用NP_GetMIMEDescription?我可以看到[docs](https://developer.mozilla.org/en/NP_GetMIMEDescription),但没有关于在哪里实现该功能。 – 2012-01-16 15:06:20

+1

@Niklas:*“它适用于Unix(Linux)和MacOS。”* – 2012-01-16 15:20:05

相关问题