当与FireBreath一起使用时,使NSWindow出现在前面



我正在使用FireBreath创建一个跨浏览器插件,它利用了各自平台的一些本地库(Windows的一些基于。net的dll和Mac的基于Objective-C的dylibs/框架)。库显示的UI最终应该出现在其他窗口的前面(特别是在浏览器窗口的前面)。对于Windows,我使用win32 API来传递窗口处理程序并将其带到前台。这是目前工作良好。但是,我目前无法找到适合Mac的解决方案,因此Mac中的窗口总是出现在浏览器后面。是否有解决此问题的解决方案?

我试过以下方法,但不太成功:

1)将NSWindow的级别设置为更高的值(例如:NSFloatingWindowLevel)并调用orderFront方法。

2)在NSApp中设置activateignoingotherapps属性并调用makeKeyAndOrderFront方法。

感谢大家的支持。我设法解决了这个问题,我在这里回复线程的完整性。

这个问题是由Objective-C中的一个基本事实引起的,与FireBreath无关。NSWindow中的window对象在调用方法将其带到前台时没有初始化(nil)。一旦这个问题解决了,只需将窗口级别设置为NSFloatingWindowLevel就可以解决这个问题。

我能想到的最好的办法是启动另一个进程来处理UI的事情,并跨越边界进行对话。在管道化STDOUT和STDIN与之通信之前,我已经这样做了。

相关内容

  • 没有找到相关文章

最新更新