Mac OS Xアプリケーションは、ネットワーク(この場合はtext/x-vcard)を介してファイルを受信します。私のコードでは、パスやアプリケーション名をハードコーディングせずに関連するアプリケーション(通常はアドレス帳)を開いてファイルを処理するにはどうしたらよいですか?私のコードでUTIを担当するアプリケーションを起動する方法
答えて
これは、本当に便利な "LSCopyApplicationForMIMEType"機能を持つApplicationServicesフレームワークでリンクすることで可能になります。これは次のように機能します:
CFURLRef appURL = nil;
OSStatus err = LSCopyApplicationForMIMEType(CFSTR("text/x-vcard"), kLSRolesAll, &appURL);
if (err != kLSApplicationNotFoundErr) {
NSLog(@"URL: %@", (NSURL *)appURL);
}
CFRelease(appURL);
パラメータの意味を説明します。最初のパラメータは、探しているMIMEタイプのCFStringRefです。 2番目のパラメータは、探しているアプリケーションの種類、つまりこのファイルを編集できるアプリケーション、またはこのファイルを表示できるアプリケーションなどを示します。kLSRolesAllは気にしないことを意味します。最後のパラメータは、CFURLRefへのポインタで、関数がアプリケーションのURLを(もしあれば)見つけることができます。私のマシン上で
が、これはプリントアウト:CFURLRefsについてのクールなものの
2009-08-01 12:38:58.159 EmptyFoundation[33121:a0f] URL: file://localhost/Applications/Address%20Book.app/
一つは、彼らはフリーダイヤルNSURLにブリッジしているということです。つまり、CFURLRefを取得してNSURLにキャストすることができます。その逆もあります。アプリケーションのNSURLを取得したら、NSWorkspaceの-launchApplicationAtURL:options:configuration:error:メソッドを使用してアプリケーションを開くのはとても簡単です。
そのアプリケーションで特定のファイルを開く場合(MIMEタイプを取得したファイルなど)、[NSWorkspace openFile:withApplication:]のようなものを使用できます。
あなたがあなたの質問で言っているにもかかわらず、MIMEタイプを取得できない場合は、同様のLaunchServices関数がたくさんあります。 You can read all about them here。
アプリケーションを見つけようとするよりもむしろ、LSOpenItemsWithRoleを使用することができます。
//Opens items specified as an array of values of type FSRef with a specified role.
OSStatus LSOpenItemsWithRole (
const FSRef *inItems,
CFIndex inItemCount,
LSRolesMask inRole,
const AEKeyDesc *inAEParam,
const LSApplicationParameters *inAppParams,
ProcessSerialNumber *outPSNs,
CFIndex inMaxPSNCount
);
- 1. 私のカスタムフレームワークでアプリケーションの起動イベントを取得する方法
- 2. C#アプリケーションの起動時にコードを実行する方法は?
- 3. ドキュメントベースのアプリケーションでアプリケーションの起動時にコードを実行する方法
- 4. サーバーの起動時にアプリケーションを起動する方法
- 5. マーケティング担当者用のWebformをアンインストールする方法
- 6. 起動時にplackアプリケーションを起動する方法
- 7. iPhone起動時にアプリケーションを起動する方法
- 8. C#でwinformアプリケーションをプログラムで自動起動する方法は?
- 9. アンドロイドの別のアプリケーションからアプリケーションを起動する方法は?
- 10. サイト内の一部を担当するJavaScriptルートファイルを検出する方法
- 11. Windowsでアプリケーションを起動する方法を知るには?
- 12. Nhibernate:非Webアプリケーションのトランザクション管理を担当するのは誰ですか?
- 13. RedHawkアプリケーションを起動するためのCコードの作成方法
- 14. 私が割り当てて起動するNSMutableArrayをリリースしたとき、私のコードはこのコードで
- 15. Recid生成を担当するテーブル?
- 16. コードの起動時にWindows用のperlアプリケーションを起動する最も簡単な方法
- 17. 特定のiOSシミュレータでMeteorアプリケーションを起動する方法
- 18. ポート80でnginxのrailsアプリケーションを起動する方法
- 19. visualvmでアプリケーションの起動をプロファイルする方法
- 20. クイックアクションでアプリケーションの起動を処理する正しい方法
- 21. systemd:アプリケーションでソケットの起動を認識する方法は?
- 22. アプリケーションの起動をバックグラウンドで維持する方法
- 23. VBAコードで他のプログラムを起動する方法は?
- 24. アプリケーション内からAndroidアプリケーションを再起動する方法
- 25. vhdlでシグナル割り当て担当者を生成する
- 26. Windowsの起動時にWPFアプリケーションの起動を最適化する方法
- 27. Visual Studioコード - TypeScriptで自動再起動するNode.jsアプリケーションのデバッグ
- 28. コードでSpringアプリケーションの起動時間を取得する
- 29. 私のMacアプリケーションから起動するには私のiPhoneアプリケーションを起動するには
- 30. Androidで自分のアプリケーション内で別のアプリケーションを起動する方法は?
ありがとうございます!それはまさに私が必要とするものです。 –