我正在尝试检测特定应用程序何时启动。
目前我正在使用NSWorkspace
,注册“启动应用程序”通知。我还使用该runningApplications
方法来获取我的应用程序启动时当前正在运行的应用程序。
对于大多数应用程序,应用程序包的名称就足够了。我有一个“已知应用程序”列表,我会与通知中传递的名称进行交叉检查。
这工作正常,直到您遇到一个应用程序,该应用程序充当使用命令行参数启动另一个应用程序的代理。
示例:Mac 上新发布的 Portal 没有专门的应用程序包。Steam 可以创建一个快捷方式,它的作用只不过是hl2_osx
使用参数启动应用程序-game
并portal
作为它的参数。
由于更多基于 Source 的游戏正在走向 Mac,我想他们将使用相同的方法来启动,有效地运行hl2_osx
带有-game
参数的应用程序。
有没有一种使用 Cocoa API 获取参数(及其参数)列表的好方法?
NSProcessInfo
接近了,提供了一个“-arguments”方法,但只提供了它自己的过程的信息......
NSRunningApplication
提供使用 PID 获取有关任意应用程序信息的能力,但没有命令行参数...
有什么可以填补两者之间的空白吗?
我试图不走产生NSTask
运行ps -p [pid]
和解析输出的路线......我更喜欢更高级别的东西。