【发布时间】:2014-07-13 07:40:40
【问题描述】:
好吧,我被难住了,在这里。我正在编写一个小实用程序,它需要在我的程序启动之前知道最前面的应用程序是什么。我试过这个:
var thePreviousApp:NSRunningApplication = NSWorkspace.sharedWorkspace().frontmostApplication
override func awakeFromNib()
{
thePreviousApp = NSWorkspace.sharedWorkspace().frontmostApplication
}
当我从 Xcode 运行时它可以工作(即将 thePreviousApp 设置为“Xcode”),但是当我从 Finder 或 Launchpad 运行二进制文件时,它返回我的程序的名称,而不是在我的程序启动之前位于最前面的程序。
对于它的价值,我可以通过将它放在 AppDelegate 中来获取上一个应用程序:
var thePreviousApp:NSRunningApplication = NSWorkspace.sharedWorkspace().frontmostApplication
func applicationDidResignActive(notification: NSNotification!)
{
thePreviousApp = NSWorkspace.sharedWorkspace().frontmostApplication
}
如果我启动程序,然后点击 command-tab 来激活之前的程序,然后再次点击 command tab 来激活我的程序,那么PreviousApp 就是正确的应用程序。
我还尝试让 runningApplications 数组是 NSWorkspace,然后遍历它们以检查哪个程序是“活动的”。再次,没有骰子。同样的问题。
任何建议将不胜感激。
谢谢, 汤姆
【问题讨论】:
标签: objective-c cocoa swift