2014-12-04 6 views
0

Адрес this страница, функция LSOpenApplication была устарела, начиная с OS X v10.10. Предлагаемая альтернатива заключается в том, чтобы вместо этого использовать -[NSWorkSpace launchApplicationAtURL]. К сожалению, я пишу пользовательский агент на C++, который должен запустить приложение GUI, написанное на Cocoa. Это означает, что у меня нет доступа к функциям какао (включая вышеупомянутую альтернативу).LSOpenApplication устарел?

Какую функцию я мог бы использовать, чтобы помочь мне сделать это, не отмеченное как устаревшее?

Заранее спасибо.

ответ

1

Вы можете открыть приложение, используя LSOpenCFURLRef() с URL-адресом приложения, которое хотите открыть. Аналогичным образом вы можете использовать LSOpenFromURLSpec() с LSLaunchURLSpec с URL-адресом приложения в поле appURL.

+0

Могу ли я предоставить аргументы процессу, как я могу, с помощью LSOpenApplication? – Alex

+0

Не совсем, но редко можно передавать аргументы приложениям. Во-первых, «открытие» приложения может означать повторное открытие. То есть, если он уже запущен, он будет активирован и получит событие Apple Rapp. В этом случае он не получает аргументы командной строки, поскольку они имеют смысл только при запуске. Точно так же обычно связь с графическим интерфейсом осуществляется через Apple Events. Так, например, если вы открываете документ с приложением, он не передается в качестве аргумента командной строки. Вместо этого он передается в Apple App. 'LSOpenFromURLSpec()' будет делать это для вашего с помощью itemRUL. –

+0

Спасибо. Я попробую метод AppleEvent! – Alex