objective-c – 获取最近启动的应用程序的PID的最简单方法

我想用指定的应用程序启动一个文件,我希望启动的程序立即成为最前面的窗口.

我知道我可以这样做:

[[NSWorkspace sharedWorkspace] openFile:fileName withApplication:appName];

然后,如果我可以获得启动的应用程序的PID,那么我可以这样做以使该应用程序最前面:

NSRunningApplication* app = [NSRunningApplication
                             runningApplicationWithProcessIdentifier: PID];
[app activateWithOptions: NSApplicationActivateAllWindows];

我的问题是:启动后立即获得此应用程序的PID的最简单,最快捷,最可靠的方法是什么,因此我可以确保此应用程序是最前沿的?

这并不像第一眼看上去那么简单.例如,我需要一个进程名称,以便使用Carbon调用获取PID,或者通过可通过NSRunningApplication访问的应用程序字典.但是,在一般情况下,我并不总是知道进程名称是什么,在某些情况下,进程名称是一个空字符串.

此外,我可能已经运行了同一个应用程序的其他实例,并且我希望始终获得刚刚启动的应用程序的特定实例的PID.

任何人都可以建议一种确定的,100%可靠的方式来获得当前启动的应用程序的PID吗?

或者,有没有办法用指定的应用程序启动给定文件,以便应用程序始终作为最前面的应用程序打开?

最佳答案 您是否尝试过使用其他版本的openFile来停用您的应用程序,让新应用程序成为焦点?

[[NSWorkspace sharedWorkspace] openFile:fileName withApplication:appName andDeactivate:YES];
点赞