登录
首页 >  Golang >  Go问答

在 OS X 中以编程方式获取正在运行的应用程序包

来源:Golang技术栈

时间:2023-05-02 21:12:59 418浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《在 OS X 中以编程方式获取正在运行的应用程序包》,正文内容主要涉及到golang等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我正在尝试获取所有正在运行的应用程序包的列表。用户已启动的 GUI 应用程序,例如正在显示的 Dock 或活动监视器(它在某些进程旁边显示一个图标)。我发现我可以使用sysctl()withKERN_PROC_ALL来获取所有正在运行的进程的列表,但这不会告诉我它们来自哪个应用程序包。像 Minecraft 这样的应用程序只是显示为java,这并不是很有用。

我确实发现活动监视器中的进程组名称大致显示了我想知道的内容:( 来源:gdries.nl)显示 Minecraft
启动器正在运行的活动监视器

实现语言并不重要。目前在 C 和 go 中工作,但如果需要其他一些环境,那不是问题。我要做的就是检测用户运行了哪些应用程序,这样我就可以记录每个应用程序的使用时间。(家长控制做了类似的事情,但将其记录在我无法解析的 plist 文件中)

正确答案

我找到了一种使用 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对象,它有一个包标识符,这是我想知道的。

以上就是《在 OS X 中以编程方式获取正在运行的应用程序包》的详细内容,更多关于golang的资料请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>