使用NSWorkspace启动应用程序而不激活它或切换空间

时间:2011-06-12 17:49:48

标签: cocoa macos background nsworkspace

我尝试在后台启动应用,而不激活它。我只是在NSWorkspace上使用此方法在后台启动它:

[[NSWorkspace sharedWorkspace] launchAppWithBundleIdentifier:bundleID
                               options:(NSWorkspaceLaunchWithoutActivation | 
                                        NSWorkspaceLaunchAllowingClassicStartup)
                               additionalEventParamDescriptor:nil launchIdentifier:NULL];

唯一的问题是它不会激活应用程序,但会将空间切换到该应用程序的指定空间。有什么方法可以避免这种情况吗?

1 个答案:

答案 0 :(得分:2)

您是否可以控制正在发布的应用?如果是这样,请覆盖其窗口的window collection behavior。您可能希望通过命令行参数或类似方法使其可控,因此当用户手动启动应用程序时,仍然会遵守Spaces设置。

如果您启动的应用程序不在您的控制之下,那么using AppleScript to temporarily override its Space assignment如何,然后将作业更改回原始值?