私はNSWorkspaceで遊んでいます。プログラムでプログラムを起動する
[[NSWorkspace sharedWorkspace]にLaunchApplication: "写真" @]が[[NSWorkspace ない仕事
を行い
[ "連絡先" @ [NSWorkspace sharedWorkspace]にLaunchApplication]が動作します共有アプリケーション] launchApplication:@ "/ Applications/Contacts.app"]は動作します
ierra)
「本当の」アプリケーションのパスを見つけるための任意の安全な方法があるのであれば、私は思っていました。連絡先アプリは、システムの異なるローカリゼーションで異なる名前を持っている可能性がありますか? 「写真」だけがうまく機能するのはなぜですか?
私はAppleがアプリケーションのパスを取得するためにアプリケーション識別子を文書化から、方法がなければならないことを想像するだろうが、私は何も見つかりませんでした。それが成功したかどう
ありがとう。これは私が探していたもののように見えます。しかし、あなたはどのようにしてバンドル識別子を確かめることができますか?また、それが時間内に一定であることを確かめることさえできます。私はAPpleの文書でリストを見つけることはできません(あなたはインターネット上のリストを見つけることができます)。 –
大きな変更がない限り、アプリケーション識別子は通常変更されません(例:iPhotoがPhotos.appに置き換えられました)。 –
はい、それは意味しています。このような場合、バンドル識別子を使用するコードが壊れてしまいます。もう一つの解決方法は、openURLを使うことです:[NSURL URLWithString:@ "photos://"]。これが時間的に安定しているかどうかは分かりませんが、iPhotoとPhotosの両方がそのURLスキームをサポートしていると言います...翌日にはそれ以上のものがなければ答えを受け入れます。 –