我想启动一个具有指定应用程序的文件,并且我希望启动的程序立即成为最前面的窗口。获取最近启动的应用程序的PID的最简单方法
我知道我能做到这一点,如下所示:
[[NSWorkspace sharedWorkspace] openFile:fileName withApplication:appName];
然后,如果我可以得到启动的应用程序的PID,然后我就可以做到这一点,使该应用程序最前面:
NSRunningApplication* app = [NSRunningApplication
runningApplicationWithProcessIdentifier: PID];
[app activateWithOptions: NSApplicationActivateAllWindows];
我有这样的问题:什么是最简单,最快和最可靠的方式来获得此应用程序的PID启动后立即,所以我可以确保这个应用程序是最前面的?
这并不像第一眼那样直截了当。例如,我需要一个进程名称才能使用Carbon调用获取PID,或通过可通过NSRunningApplication
访问的应用程序字典。但是,在一般情况下,我并不总是知道进程名是什么,在某些情况下,进程名是一个空字符串。
此外,我可能已经运行了该应用程序的其他实例,并且我总是要获取刚启动的应用程序的特定实例的PID。
任何人都可以提出一个确定的,百分之百可靠的方法来获取当前启动的应用程序的PID?
或者,有没有办法用指定的应用程序启动给定的文件,这样应用程序总是以最前面的应用程序打开?
我现在意识到,为了使我的应用程序最前面的一个更可靠的方法是通过'SetFrontProcess(PSN)',其中 “PSN” 是的'ProcessSerialNumber'推出的应用程序。但我仍然有同样的问题,因为我需要一个进程名来检索应用程序的'ProcessSerialNumber',并且存在与上面描述的有关如何获取应用程序的PID相同的竞争条件。 – HippoMan 2012-03-11 19:31:00