LSCopyAllHandlersForURLScheme(CFSTR("http"))
またはLSCopyAllRoleHandlersForContentType(CFSTR("public.html"), kLSRolesViewer)
またはsetintersectionの両方を使用してください。
これら2つの関数はバンドル識別子を返します。 LSFindApplicationForInfo
を使用して、アプリケーションのディスク上の優先インスタンスをそのバンドルIDで見つけることができます。
(the Core Foundation memory-management rulesに従うことを忘れないでください。)
編集:この回答にコメントでは、smorganは、最初の呼び出しの代替として(つまり、HTTP のです)LSCopyAllHandlersForURLScheme(CFSTR("https"))
を示唆しています。これは良い提案です。この
NSArray* apps = (NSArray*)CFBridgingRelease(LSCopyAllHandlersForURLScheme(CFSTR("https"))) ;
NSLog(@"%@", apps);
このデフォルトのためのリストに
は、私は、これらはカーボンのAPIです気づきました。私はCarbonが廃止予定だと思った? –
Launch Servicesは、CarbonではなくCore Servicesの一部です。このように、非推奨ではなく、64ビット版で利用可能です。 (http://developer.apple.com/documentation/Carbon/Reference/LaunchServicesReference/のドキュメントを参照してください) –
"http"の代わりに "https"を使いたいかもしれません。私の経験では、後者のほうが偽陽性本当にブラウザであるもののために。 – smorgan