【发布时间】:2015-10-27 03:53:19
【问题描述】:
我们正在为 mac 上的 safari 浏览器制作插件。
通过互联网浏览后,我发现 mac 上的插件通常是无窗口的,但我想要一个有窗口的插件。即使在函数 NPP_SetWindow 中,我也尝试打印变量 type(类型为 NPWindowType)的值,如下所示:
NPError NPP_SetWindow(NPP instance, NPWindow * pNPWindow)
{
...
printf("....: %d",pNPWindow->type);
...
}
它打印 2 即其值为 NPWindowTypeDrawable 表示无窗口。
此外,我在某处阅读了以下代码:
NPError NPP_New(NPMIMEType pluginType,
NPP instance, uint16 mode,
int16 argc, char *argn[],
char *argv[], NPSavedData *saved)
{
...
NPError result = NPN_SetValue(instance, NPPVpluginWindowBool, (void*)false);
}
这里说可以通过在 NPN_SetValue 函数调用中将 NPPVpluginWindowBool 的值传递为 false 来使插件无窗口。 如果插件不进行此调用,则将其视为窗口插件。但它也说“Mac OS X 上的插件总是无窗口的”。我还不确定这一点。
我的问题是,此处为 NPPVpluginWindowBool 传递 true 值会使插件窗口化吗?我还没试过。
请建议如何以编程方式或任何其他方式使其成为窗口插件,以便 pNPWindow->type(在第一个代码 sn-p 中)也将打印 1 即 NPWindowTypeWindow 表示窗口插件。
谢谢。
【问题讨论】:
标签: osx-yosemite npapi browser-plugin windowless windowed