MACOSX:如何从“命令行工具”类型的应用程序启动应用程序(.APP)(MacOsX: How t

2019-08-17 17:10发布

在Xcode 4.6,我创建了基于“命令行工具”项目模板创建一个新的应用程序。 如何以编程从“命令行工具”应用程序启动另一个应用程序(.APP应用程序绑定)?

Answer 1:

有许多方法可以做到这一点,利用发射服务和或NSWorkspace

一个的更灵活的方式来标识的捆绑的应用是通过它的包标识符( CFBundleIdentifier ),它是像一串com.apple.TextEdit 。 这可以让你不必硬编码一个假定的路径,其中的应用程序会被发现,或者通过硬编码的应用程序包,这两个用户可以轻易改变的名称来标识的应用程序。 您可以使用NSWorkspacelaunchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:启动应用程序。 如果你不知道的话,你可以通过检查其获取应用程序包的包标识AppName.app/Contents/Info.plist文件。 然后使用下面的代码:

if (![[NSWorkspace sharedWorkspace]
       launchAppWithBundleIdentifier:@"com.apple.TextEdit"
                             options:NSWorkspaceLaunchDefault
      additionalEventParamDescriptor:NULL
                    launchIdentifier:NULL]) {
      NSLog(@"launching app failed!);
}

重要提示: NSWorkspace是部分AppKit.framework框架,它最初没有包含在“命令行工具”项目模板。 将它添加到你的项目,选择像显示下面的图片中的目标列表中选择目标,然后单击+按钮以添加额外的框架。

同时添加AppKit.frameworkCocoa.framework

这将导致所有3在链接二进制与图书馆步骤中列出。 在这一点上,你可以同时删除Foundation.frameworkAppKit.framework从连接阶段,刚刚离开Cocoa.framework ,如下图所示:



Answer 2:

您是否尝试过“开放”? 至少在终端“开放”的运行文件和/或应用。



文章来源: MacOsX: How to launch an application (.app) from a “Command Line Tool” type of app