如何识别活动应用程序正在使用的文件?

问题描述

我的任务是识别与用户正在使用的 macOS 应用程序相关联的文件名或文件标题。我发现使用 NSWorkspace.shared.frontmostApplication?.localizedname 可以识别活动应用程序。我一直无法找到如何识别与应用程序关联的打开文件名的名称。例如,Google Chrome 是我当前活动的应用程序。 “如何识别活动应用程序正在使用的文件?堆栈溢出”是文件名。我如何在我的 macOS 应用上检测到它?

感谢您的帮助!

解决方法

这是Unix。使用 Unix 提供的工具。

因此,在这种情况下,您可能会获取此进程的 pid 并使用 lsof。例如:

$ ps -u mattmobile | grep "TextEdit"
  501 13602 ??         0:01.48 /System/Applications/TextEdit.app/Contents/MacOS/TextEdit

所以现在我们知道 TextEdit 是 13602。那么:

$ mattmobile:~ mattmobile$ lsof -p 13602
COMMAND    PID       USER   FD     TYPE DEVICE  SIZE/OFF                NODE NAME
TextEdit 13602 mattmobile  cwd      DIR    1,4       384         12884936974 /Users/mattmobile/Library/Containers/com.apple.TextEdit/Data
TextEdit 13602 mattmobile  txt      REG    1,4    399856 1152921500311959473 /System/Applications/TextEdit.app/Contents/MacOS/TextEdit
... and so on ...