我正在尝试获取所有正在运行的应用程序包的列表。用户已启动的 GUI 应用程序,如 Dock 正在显示,或活动监视器(它在某些进程旁边显示一个图标)。我发现我可以使用sysctl()withKERN_PROC_ALL来获取所有正在运行的进程的列表,但这不会告诉我它们来自哪个应用程序包。像 Minecraft 这样的应用程序只是显示出来java,这不是很有用。我确实发现活动监视器中的进程组名称大致显示了我想知道的内容:实现语言并不重要。目前使用 C 语言工作,但如果需要其他一些环境,那不是问题。我想要做的就是检测用户正在运行哪些应用程序,以便我可以记录每个应用程序的使用时间。(家长控制做了类似的事情,但将其记录在我无法解析的 plist 文件中)
1 回答
皈依舞
TA贡献1851条经验 获得超3个赞
我找到了一种使用 Swift 和 Cocoa API 来做到这一点的方法。据推测,这也应该可以使用普通 C 语言,但这对我的应用程序来说已经足够了。
import Foundation
import AppKit
// Get all running applications
let workspace = NSWorkspace.shared
let applications = workspace.runningApplications
for app in applications {
print(app)
}
app是一个NSApplication对象,它有一个包标识符,这就是我想知道的。
- 1 回答
- 0 关注
- 182 浏览
添加回答
举报
0/150
提交
取消