小编Hip*_*Man的帖子

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

我想使用指定的应用程序启动文件,并且希望启动的程序立即成为最前面的窗口。

我知道我可以这样做,如下所示:

[[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?

或者,是否可以使用指定的应用程序启动给定文件,以使该应用程序始终以最前面的应用程序打开?

macos cocoa pid objective-c launch

5
推荐指数
1
解决办法
1621
查看次数

使用Accessibility API关闭另一个应用的所有窗口

我已经知道如何在Objective-C中使用Mac OSX Accessibility API来重新定位另一个正在运行的应用程序的窗口,而无需使用任何类型的脚本桥.

现在,我想使用相同的辅助功能API(再次,没有任何脚本桥)来关闭另一个正在运行的应用程序的所有打开的窗口.

我想在Objective-C中编写的代码应该与AppleScript代码完全相同:

tell application "TheApplication"
close every window
end tell
Run Code Online (Sandbox Code Playgroud)

我猜这是可能的,因为它在AppleScript中是允许的.

macos cocoa accessibility window objective-c

3
推荐指数
1
解决办法
2035
查看次数

标签 统计

cocoa ×2

macos ×2

objective-c ×2

accessibility ×1

launch ×1

pid ×1

window ×1