从Cocoa应用程序中执行外部应用程序

时间:2013-02-24 15:30:51

标签: cocoa plugins

首先,让我明确说明我需要它简单(显然我想要的是而不是只是为了执行另一个应用程序)。

我需要什么:

  • 使用外部应用程序(类似“插件”)
  • 的功能扩展我的主应用程序
  • 这些外部插件必须与主应用程序分开(在代码/实现方面)
  • 外部插件必须能够无缝集成到主应用程序中
  • 外部应用程序应被用户视为“外部”
  • 实施必须遵守App Store条款和SandBoxing指南。

示例 (虽然我的想法并非100%明确)

  • 主机应用程序启动
  • 外部应用程序有一个窗口(及其自己的功能)
  • 执行外部应用程序后,其窗口现在变为主机应用程序的“工作表”

我不知道我所描述的内容是否可行。但是,我仍然需要听取您对此的意见。我已经做了很多关于此事的研究,虽然我将基于整个概念,使主机应用程序可以通过外部脚本扩展(它获得输入并提供一些输出 - 通过php,python,AppleScript,等等.. 。),这不包括“插件”有自己的用户界面的情况。

那么,有什么想法吗? (一个例子或一些具体的参考指向我将是理想的...)

1 个答案:

答案 0 :(得分:2)

有一个新的API可以准确地解决您的需求:

  

XPC Services API是libSystem的一部分,它为与Grand Central Dispatch(GCD)集成并启动的基本进程间通信提供了一种轻量级机制。 XPC Services API允许您创建称为XPC服务的轻量级辅助工具,代表您的应用程序执行工作。

Daemons and Services Programming Guide

WWDC 2012 videos中有一个很好的谈论。

你描述的内容确实很可能 - 而且不一定非常困难。但是,你的“例子”并不是 - 正如你所说的那样 - 完全连贯。您希望第二个应用程序是独立的,但您不希望它看起来像“外部”;这些力量并不完全可以调和。出于显而易见的原因,您不太可能做的是接管已经独立运行的应用程序。但是你可以开始自己的流程。

通常的架构是让几个守护进程或服务为您执行任务,以及一个控制进程,它还处理所有内容的用户界面。如上所述,邮件以这种方式运作。