【问题标题】:Launch app with NSWorkspace without activating it nor switch space使用 NSWorkspace 启动应用程序而不激活它或切换空间
【发布时间】:2011-06-12 17:49:48
【问题描述】:

我尝试在后台启动一个应用程序,但没有激活它。我只是在NSWorkspace 上使用这种方法在后台启动它:

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

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

【问题讨论】:

    标签: cocoa macos background nsworkspace


    【解决方案1】:

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

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

    【讨论】:

    • 不,我无法控制我启动的应用程序。使用 AppleScript 将不起作用,因为空间切换仅在午餐过程中暂时附加。而且由于 AppleScript 只能在应用程序启动时更改空间,所以它不起作用......
    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    相关资源
    最近更新 更多