【问题标题】:OSX - Detect when Finder is startedOSX - 检测 Finder 何时启动
【发布时间】:2015-05-04 15:27:21
【问题描述】:

我的应用如何知道 Finder 已启动?有什么活动可以帮助解决这个问题吗?

我曾考虑枚举进程并查找 Finder,但这似乎太繁重,无法每 X 秒执行一次。有没有其他办法?

【问题讨论】:

  • 嗯? Finder 一直在运行,不是吗?
  • @MarkSetchell:有些应用会重新启动 Finder,因此需要知道它何时启动。

标签: macos finder


【解决方案1】:

您可以观察NSWorkspace 发布到其通知中心(-[NSWorkspace notificationCenter])的通知。例如,它会在启动 GUI 应用程序时发布 NSWorkspaceDidLaunchApplicationNotification。该通知的userInfo 字典在NSWorkspaceApplicationKey 键下有一个NSRunningApplication 实例,用于新启动的应用程序。您可以检查其中的bundleIdentifier 是否等于“com.apple.finder”。

【讨论】:

  • 这适用于所有类型的应用程序还是仅适用于 Cocoa 应用程序?例如,这适用于控制台应用程序还是没有 GUI 的应用程序?
  • A) 您询问了 Finder。 B) 您可以尝试阅读 NSWorkspaceDidLaunchApplicationNotification 的文档,其中解释了它的局限性。 (它仅适用于前台 GUI 应用程序。) C)这些文档推荐了一种替代技术来了解仅后台和 LSUIElement 应用程序。 D) 你真的不想要通知你启动或终止的每个进程(例如控制台程序)的东西。在像 OS X 这样的系统上,这种情况一直都在发生。
  • 我想我的问题不是很清楚。对于那个很抱歉。我是从我的应用程序的角度问的。我的应用程序需要是 Cocoa 应用程序,还是也可以是没有 GUI/控制台应用程序的应用程序并接收通知?
  • 抱歉造成误会。您的应用必须链接到 AppKit 或 Cocoa。它必须运行主线程的运行循环。它不需要是捆绑的应用程序。我认为不需要创建NSApplication 对象或调用NSApplicationMain()-[NSApplication run]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-16
  • 1970-01-01
  • 2014-06-22
  • 2014-05-15
  • 2014-10-19
  • 2022-12-09
  • 2011-08-29
相关资源
最近更新 更多