2014-12-16 4 views
4

В моем приложении я хотел бы открыть другое приложение, установленное на Mac пользователя (например, iPhoto). Я не уверен, что мне нужно искать в документации. Как это называется и как мне это сделать? СпасибоОткрыть другое приложение для Mac

ответ

0

Есть разные способы сделать это. Наиболее эффективным является использование fvork и execve - см. man vfork и man execve.

Менее эффективным, но более гибким является использование вызова библиотеки system. То, что это на самом деле делает, запускает shell-like bash - затем передает строку, которую вы предоставляете, в bash. Таким образом, вы можете настроить трубопроводы, перенаправить и т. Д.

Или вы можете отправить событие Apple в Finder: «Скажите Finder Open iPhoto».

В первых двух случаях вы хотите запустить исполняемый файл внутри пакета, то есть /Applications/iPhoto.app/Contents/MacOS/iPhoto.

Попробуйте выше из командной строки, в терминале:

$ /Applications/iPhoto.app/Contents/MacOS/iPhoto 

Вы увидите запуск Iphoto App.

+4

Как этот ответ связан с Xcode или Swift? – Shmidt

3

let task = NSTask.launchedTaskWithLaunchPath(<#path: String#>, arguments: <#[AnyObject]#>) вероятно, будет делать то, что вы хотите

+0

Спасибо, Томас! Например, если вы хотите запустить уникальный экземпляр Unity, вы можете использовать: let _ = Process.launchedProcess (launchPath: «/Applications/Unity/Unity.app/Contents/MacOS/Unity», аргументы: ["- на "]) – TigerCoding

13

Xcode 8.3.2 • Swift 3.1

func openPhotos() { 
    NSWorkspace.shared().open(URL(fileURLWithPath: "/Applications/Photos.app")) 
} 

И просто позвоните:

openPhotos() 

или с использованием LaunchApplication и добавить параметр имени приложения к методу:

func openApp(_ named: String) -> Bool { 
    return NSWorkspace.shared().launchApplication(named) 
} 

использование:

if openApp("Photos") { 
    print(true) 
} 
Смежные вопросы