能否以编程方式将插件(用于 mac 上的 safari)设置为窗口化或无窗口化?
Can a plugin(for safari on mac) be made windowed or windowless programmatically?
我们正在 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);
}
这里说可以通过将 NPPVpluginWindowBool 的值作为 false in NPN_SetValue函数调用。
如果插件不进行此调用,则它被视为窗口插件。但它也说“ Mac OS X 上的插件总是无窗口的”。我还不确定这一点。
我的问题是,在这里为 NPPVpluginWindowBool 传递 true 值会使插件窗口化吗?我还没试过。
请建议如何以编程方式或任何其他方式使其成为窗口插件,以便 pNPWindow->type(在第一个代码片段中)也将打印 1 即 NPWindowTypeWindow表示窗口化插件。
谢谢。
Mac 上没有 windowed 插件;曾经有过,现在没有了。
现在只有绘图模型了,一共有三个:
- 核心图形
- 核心动画
- 使核心动画失效
前两个是唯一适用于 Safari 的。无法在 Mac 上获取 window 对象。过去有一些 hack 可以与 Quartz 和 QuickDraw 一起使用,也可能与 Carbon 和 CoreGraphics 一起使用,但这些模型现在早已不复存在了。
另请参阅:
- https://developer.apple.com/library/safari/qa/qa1755/_index.html
- https://wiki.mozilla.org/NPAPI:CoreGraphicsDrawing
- http://www.firebreath.org/display/documentation/Event+models+and+drawing+models
- How do I get an NSView in a cocoa event model NPAPI plugin
我们正在 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);
}
这里说可以通过将 NPPVpluginWindowBool 的值作为 false in NPN_SetValue函数调用。 如果插件不进行此调用,则它被视为窗口插件。但它也说“ Mac OS X 上的插件总是无窗口的”。我还不确定这一点。
我的问题是,在这里为 NPPVpluginWindowBool 传递 true 值会使插件窗口化吗?我还没试过。
请建议如何以编程方式或任何其他方式使其成为窗口插件,以便 pNPWindow->type(在第一个代码片段中)也将打印 1 即 NPWindowTypeWindow表示窗口化插件。
谢谢。
Mac 上没有 windowed 插件;曾经有过,现在没有了。
现在只有绘图模型了,一共有三个:
- 核心图形
- 核心动画
- 使核心动画失效
前两个是唯一适用于 Safari 的。无法在 Mac 上获取 window 对象。过去有一些 hack 可以与 Quartz 和 QuickDraw 一起使用,也可能与 Carbon 和 CoreGraphics 一起使用,但这些模型现在早已不复存在了。
另请参阅:
- https://developer.apple.com/library/safari/qa/qa1755/_index.html
- https://wiki.mozilla.org/NPAPI:CoreGraphicsDrawing
- http://www.firebreath.org/display/documentation/Event+models+and+drawing+models
- How do I get an NSView in a cocoa event model NPAPI plugin