2014-12-04 184 views
0

根据this页面,功能LSOpenApplicationOS X v10.10已被弃用。建议的替代方案是使用-[NSWorkSpace launchApplicationAtURL]代替。不幸的是,我正在用C++编写一个用户代理,它必须启动一个用Cocoa编写的GUI应用程序。这意味着我无法访问可可功能(包括上述替代选项)。LSOpenApplication已弃用?

我还可以使用其他什么函数来帮助我做到这一点,但未标记为已弃用?

在此先感谢。

回答

1

您可以使用LSOpenCFURLRef()打开一个应用程序,其中包含要打开的应用程序的URL。同样,您可以使用LSOpenFromURLSpec()LSLaunchURLSpec以及appURL字段中的应用程序的URL。

+0

我可以使用LSOpenApplication为流程提供参数吗? – Alex 2014-12-04 21:20:35

+0

不完全是这样,但将参数传递给应用程序并不常见。首先,“打开”应用程序可能意味着重新打开应用程序。也就是说,如果它已经在运行,它将被激活并将收到'rapp'Apple Event。在这种情况下,它不会收到命令行参数,因为这些参数只在启动时有意义。同样,通常通过Apple Events与GUI应用程序进行通信。因此,例如,如果您使用应用程序打开文档,则不会将其作为命令行参数传递。相反,它是通过一个'odoc'Apple事件传递的。 'LSOpenFromURLSpec()'将为你的'itemURLs'做到这一点。 – 2014-12-04 21:43:08

+0

谢谢。我会尝试AppleEvent方法! – Alex 2014-12-04 22:04:31