【问题标题】:What is the best way to programmatically keep track of the active application on Mac以编程方式跟踪 Mac 上的活动应用程序的最佳方法是什么
【发布时间】:2012-11-08 12:09:40
【问题描述】:

我想创建一个跟踪当前活动应用程序(活动窗口)的后台应用程序。我设法通过使用GetFrontProcess 获取活动应用程序,但现在我需要跟踪它,以便知道它何时发生变化。 我想到了两种方法 1.设置一个Timmer并在每次定时器触发时重新检查变量(我应该创建一个线程吗?) 2.创建一个专用线程,循环检查变量,每次迭代后休眠几毫秒,以避免过度。

效率对我来说很重要,因为这应该是一个不打扰的后台线程。 你觉得这些方法对吗?有什么效率方面的考虑吗?很想听听更有效的不同想法。

感谢您的帮助 吉尔

【问题讨论】:

    标签: objective-c macos cocoa macos-carbon


    【解决方案1】:

    您可以观察NSWorkspace 通知NSWorkspaceDidActivateApplicationNotification

    例如:

    [[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
                                       selector:@selector(appActivated:)
                                       name:NSWorkspaceDidActivateApplicationNotification
                                       object:nil];
    

    并且有一个方法:

    -(void)appActivated:(NSNotification*) notification {
        NSRunningApplication* currentApp = [notification.userInfo valueForKey:NSWorkspaceApplicationKey];
        ....
    }
    

    【讨论】:

      猜你喜欢
      • 2017-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      相关资源
      最近更新 更多