0

I have a Cocoa application which I am running as an agent because it has a status bar component. When my application brings up a window, these windows don't appear in the list when I press Ctrl-Tab to cycle through applications.

Is there a way to force a window in my application to appear?

4

1 回答 1

0

当它是代理时不是,因为它永远不会成为活动应用程序。代理意味着只有最少的用户交互,因此假设您没有足够长的代理窗口让用户需要使用命令选项卡离开它。(我个人觉得这很烦人,因为出于同样的原因,我经常在应用程序窗口后面丢失崩溃报告窗口,但这确实是有道理的。)

但是,应用程序不必作为代理运行才能使状态栏项工作,所以我只需将 LSUIElement 标志设置为 NO 并完成它。它可以是一个普通的非代理应用程序,只是碰巧实例化了一个状态栏项目。

如果您不希望应用程序能够变为活动状态,除非窗口可见,那么这会涉及更多。您可能需要将应用程序和代理分成单独的进程,并让代理启动应用程序以显示窗口。然后确保应用程序在窗口关闭时退出,只留下代理运行。Arq ( http://www.haystacksoftware.com/arq/ ) 是这样工作的应用程序/代理对的一个示例,代理和应用程序之间的区别可能比您所追求的更清晰。

于 2013-08-30T08:42:21.723 回答