2014-12-04 185 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