Hip*_*Man 5 macos cocoa pid objective-c launch
我想使用指定的应用程序启动文件,并且希望启动的程序立即成为最前面的窗口。
我知道我可以这样做,如下所示:
[[NSWorkspace sharedWorkspace] openFile:fileName withApplication:appName];
Run Code Online (Sandbox Code Playgroud)
然后,如果我可以获取该启动的应用程序的PID,则可以这样做以使该应用程序位于最前面:
NSRunningApplication* app = [NSRunningApplication
runningApplicationWithProcessIdentifier: PID];
[app activateWithOptions: NSApplicationActivateAllWindows];
Run Code Online (Sandbox Code Playgroud)
我的问题是:启动后立即获取此应用程序的PID的最简单,最快和最可靠的方法是什么,因此我可以确保该应用程序位于最前端?
这并不像乍看起来那样简单。例如,我需要一个进程名称,以便使用Carbon调用或通过可以访问的应用程序字典来获取PID NSRunningApplication。但是,在一般情况下,我并不总是知道进程名称是什么,在某些情况下,进程名称是一个空字符串。
此外,我可能已经在运行同一应用程序的其他实例,并且我想始终获取刚刚启动的应用程序特定实例的PID。
谁能建议一种确定的,百分百可靠的方法来获取当前启动的应用程序的PID?
或者,是否可以使用指定的应用程序启动给定文件,以使该应用程序始终以最前面的应用程序打开?
您是否尝试过使用 openFile 的其他版本,它允许您停用应用程序,从而让新应用程序获得焦点?
[[NSWorkspace sharedWorkspace] openFile:fileName withApplication:appName andDeactivate:YES];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1621 次 |
| 最近记录: |