第二个最前面的应用?

时间:2009-07-18 23:10:49

标签: objective-c cocoa macos

我正在寻找一种方法来确定第二个最前面的应用程序。这就是我的意思。

假设我按此顺序启动了三个应用程序:Xcode,Interface Builder和我的应用程序。如果我按下Command-tab,我应该在切换台中看到四个应用程序:(从左到右)我的应用程序,Interface Builder,Xcode和Finder。

然后我们说我切换到Finder。应用程序切换器中的新订单是:Finder,我的应用程序,Interface Builder和Xcode。

如果我然后切换回我的应用程序,那么订单现在是我的应用程序,Finder,Interface Builder和Xcode。

我正在寻找一个API,我可以在其中调用它并在启动时获取它Interface Builder是第二个最前面的应用程序,但是当我切换回它时,它现在是Finder。

如果它有任何不同,我的应用程序实际上不会出现在应用程序切换器中,因为它将是代理应用程序(LSUIElement = YES)。

是否有可以执行此操作的API?根据NSWorkspace的说法,我发现的唯一选择是运行一个持续监视activeApplication的计时器。除了在发布期间,这很有效。如果可能的话,我想知道发布时的第二个最前面的应用程序。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

在发布时,第二个最前面的应用程序不会是最后一个应用程序运行吗?

答案 1 :(得分:0)

您可能能够汇集以下信息:

流程管理员参考(GetFrontProcess()GetNextProcess()

Foundation.framework/Headers/NSGraphics.hNSCountWindows()NSWindowList()
石英窗口服务参考
CoreGraphics.framework/Headers/CGWindow.h
code.google.com CGSPrivate.h
www.cocoadev.com CoreGraphicsPrivate