1

Xcode 4.6 では、「コマンド ライン ツール」プロジェクト テンプレートに基づいて新しいアプリケーションを作成しました。

その「コマンド ライン ツール」アプリから別のアプリケーション (.app アプリケーション バンドル) をプログラムで起動するにはどうすればよいですか?

4

2 に答える 2

3

これを実現するには、Launch Services や を使用する方法が多数ありますNSWorkspace

バンドルされたアプリケーションを識別するより柔軟な方法の 1 つは、バンドル識別子 ( CFBundleIdentifier) を使用することです。これは、 のような文字列ですcom.apple.TextEdit。これにより、アプリケーションが見つかると想定されるパスをハードコーディングしたり、アプリケーション バンドルの名前をハードコーディングしたりすることなく、アプリケーションを識別することができます。どちらもユーザーが簡単に変更できます。を使用してアプリを起動できNSWorkspaceます。launchAppWithBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifier:アプリケーション バンドルのバンドル識別子がわからない場合は、そのAppName.app/Contents/Info.plistファイルを確認することで取得できます。次に、次のコードを使用します。

if (![[NSWorkspace sharedWorkspace]
       launchAppWithBundleIdentifier:@"com.apple.TextEdit"
                             options:NSWorkspaceLaunchDefault
      additionalEventParamDescriptor:NULL
                    launchIdentifier:NULL]) {
      NSLog(@"launching app failed!);
}

重要:フレームワークNSWorkspaceの一部であり、AppKit.framework最初は「コマンド ライン ツール」プロジェクト テンプレートに含まれていません。プロジェクトに追加するには、下の画像に示すように、ターゲットのリストでターゲットを選択し、[+] ボタンをクリックしてフレームワークを追加します。

ここに画像の説明を入力

AppKit.frameworkと の両方を追加しCocoa.frameworkます。

これにより、3 つすべてが [バイナリとライブラリのリンク] ステップにリストされます。その時点で、リンク ステージから と の両方を削除し、以下のように だけを残すことFoundation.frameworkができます。AppKit.frameworkCocoa.framework

ここに画像の説明を入力

于 2013-03-18T19:17:14.193 に答える
1

「開く」は試しましたか?少なくともターミナルで「開く」と、ファイルやアプリが実行されます。

于 2013-03-18T18:42:44.957 に答える