我想启动一个带有指定应用程序的文件,我希望启动的程序立即成为最前面的窗口。
我知道我可以这样做:
[[NSWorkspace sharedWorkspace] openFile:fileName withApplication:appName];
然后,如果我可以获得那个已启动应用程序的 PID,我就可以执行此操作以使该应用程序位于最前面:
NSRunningApplication* app = [NSRunningApplication
runningApplicationWithProcessIdentifier: PID];
[app activateWithOptions: NSApplicationActivateAllWindows];
我的问题是:什么是最简单、最快捷、最可靠的方法来在启动后立即获取此应用程序的 PID,以便我可以确保此应用程序位于最前面?
这并不像乍看起来那么简单。例如,我需要一个进程名称以便使用 Carbon 调用或通过可通过 NSRunningApplication
访问的应用程序字典获取 PID。但是,在一般情况下,我并不总是知道进程名称是什么,在某些情况下,进程名称是一个空字符串。
此外,我可能已经运行了同一个应用程序的其他实例,并且我希望始终获取我刚刚启动的应用程序的特定实例的 PID。
谁能建议一种确定的、100% 可靠的方法来获取当前启动的应用程序的 PID?
或者,是否有一种方法可以使用指定的应用程序启动给定的文件,以便该应用程序始终作为最前面的应用程序打开?
最佳答案
您是否尝试过使用其他版本的 openFile 来停用您的应用程序,让新应用程序获得焦点?
[[NSWorkspace sharedWorkspace] openFile:fileName withApplication:appName andDeactivate:YES];
关于objective-c - 获取最近启动的应用程序的 PID 的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9656127/