问题描述
我的任务是识别与用户正在使用的 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 ...