2010-02-23 87 views
2

我有一个适用于OS X的旧NPAPI插件,我正试图改装为使用Snow Leopard的Safari版本。我的问题是,当我将Safari切换到64位模式时,它将插件环境更改为流程模式(其中插件由32位WebKitPluginHost进程托管)。现在我的工具栏调色板在屏幕上不可见,即使它们所在的NSPanels认为它们是可见的。该文件称,不推荐使用窗户,但并不表示禁止使用窗户;有什么我可以做,以提出我的Windows?在64位Safari中显示来自32位NPAPI插件的窗口

回答

3

最可靠的解决方案是简单地让其他应用程序,可能通过一些IPC机制连接到你的插件,这样做Apple

避免创建窗口。意图是让插件在浏览器窗口中运行。虽然有些插件历来就是这样做的,但不推荐在您的插件中创建窗口。如果你需要维护独立的窗口,你应该考虑启动一个单独的应用程序。

从某个插件启动窗口可能会在某些情况下工作,并完全打破其他窗口。通过建议不这样做,Apple可以随时打破以前的工作行为。

1

不幸的是,可能不是。如果你正在做任何使用普通图形库(CoreAnimation,Cocoa等)无法做到的事情,那么你可能无法使用64位safari中的32位插件来完成它。

不过,如果你在64位模式下编译你的插件,你可能会做得更多。我不知道: -/

+0

谢谢。这正是我一直在想的。因此,这个问题。尽管我无法回头确认这一点,但似乎Safari 4.0.5已经更进一步,并阻止显示弹出式菜单。 – 2010-03-14 12:05:12

0

我知道我有点晚了。 Safari不允许插件显示NSPanel。您应该尝试使用NSWindow。我知道苹果不同意。

对于显示菜单,您可以使用“popupcontextmenu”。它需要NPNSMenu这是NSMenu typecasted。