3

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

我尝试了以下方法但没有取得多大成功:

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

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

非常感谢这方面的任何帮助。

4

2 回答 2

2

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

这个问题是由 Objective-C 中的一个基本事实引起的,它与 FireBreath 无关。当调用方法将其置于前台时,NSWindow 中的窗口对象未初始化(nil)。修复后,只需将窗口级别设置为 NSFloatingWindowLevel 即可解决此问题。

于 2013-05-16T05:25:41.107 回答
0

我能想到的最好的选择是启动另一个流程来完成你的 UI 工作并跨越边界进行对话。在将 STDOUT 和 STDIN 与它通信之前,我已经完成了这项工作。

于 2013-04-30T00:27:42.113 回答