OS X中的NPAPI插件+ NSWindow层次结构 - 我可以找到父母并将其带到前面吗?

时间:2012-03-26 14:05:18

标签: macos nswindow npapi

我有一个NPAPI(窗口模式)插件,在弹出窗口中运行。不幸的是,Chrome中存在一个错误,它会意外地抓住焦点并且弹出窗口被遮挡。我的目标是在它被修复时解决这个bug。

SetWindow传递给我NPWindow *。使用它,在Windows上我得到一个有效的HWND并可以导航到父HWND。在Mac上(使用Cocoa模型)我可以得到一个NSWindow但它似乎没有效果,并且当我发送makeKeyAndOrderFront或任何其他消息时似乎没有做任何有建设性的事情。

我应该期待获得有效的NSWindow吗?这个NSWindow的子窗口是否与弹出窗口的顶级窗口有某种联系?如果是这样,是否有适当的方式获得该窗口?

1 个答案:

答案 0 :(得分:1)

简答:否

更长的答案:不是适用于所有浏览器的方式,并且保证不会在下一个版本上中断。

在当前的浏览器上,您的插件在不同的进程中运行,浏览器实际上是在整个进程中编组绘图; NPWindow *和NSWindow之间没有任何链接可用于任何可用的绘图模型。在Carbon(仅限32位浏览器)中,有一个hack可以用来完成这项工作,但它只是 - 一个黑客。它不再适用于较新的浏览器。