2009-11-18 4 views
7

AppleScriptの速度が遅すぎるため、ScriptingBridgeを試して、System Preferences.appを開き、現在のペインを設定しました。これも遅すぎます。それを行うより速い方法がありますか?適切プリフェンをプログラムで開く最速の方法は?

+2

システムPreferences.appが呼び出されても、それほど時間がかかりますが気になりましたか?私はそれに気付いたので。 –

+0

これまでの質問とこれを参考にして、http:///0xced.blogspot.com/2008/02/upgrading-system-preference-pane.html – 0xced

+0

をご覧ください。 –

答えて

5

起動サービスまたはNSWorkspaceを使用して、プリファインバンドルを開きます。 Open(1)コマンドのプログラム版です。

+1

確かに: '[[NSWorkspace sharedWorkspace] openFile:@"/Path/To/Foo.prefPane "];' – mxcl

+0

サードパーティ製のプリフェーンがインストールされている場所を把握しなければならないので、ああ、適切なNSWorkspace呼び出しでバンドルIDを使用しても動作しないようです。 – mxcl

+1

2つの場所があり、NSSearchPathForDirectoriesInDomainsを使って両方を見ることができます。 –

5

非常に簡単:

system("open -a System\\ Preferences"); 

とオープンしているペインを選択する:

提供
open /System/Library/PreferencePanes/Internet.prefPane 
open /System/Library/PreferencePanes/DateAndTime.prefPane 
... 

あなたは、少し試行錯誤して、最初の/System/Library/PreferencePanes/の右のファイルを見つけました。

私は確信していますココアこの最後のトリックを行う方法は、まだ...これはすべての言語で動作します。また

サードパーティーのアプリは自分の*.prefPaneファイルをインストールする場所それはだとして、あなたが...これらのパス

/Library/PreferencePanes/ 
~/Library/PreferencePanes/ 

をチェックすることもできます

0

どのように正確に、あなたはスクリプトを使用しましたブリッジ?

私はこのコードを試してみました、私はそれが合理的に実行思う:ここ

SystemPreferencesApplication *SystemPreferences = [SBApplication applicationWithBundleIdentifier:@"com.apple.systempreferences"]; 
@try { 
    [SystemPreferences activate]; 
    SystemPreferences.currentPane = [SystemPreferences.panes objectWithID:@"com.apple.preference.security"]; 
} @catch (NSException *exception) { 
    NSLog(@"%@", [exception description]); 
} 

はココアでちょうど楽しみのために別のオプションですが、すべてでは文書化されていません(とのみのシステム環境設定パネルで動作します)。パフォーマンスを比較するために使用することはできますが、実動コードでは使用しないでください。

id bezelServicesTask = [NSConnection rootProxyForConnectionWithRegisteredName:@"com.apple.BezelServices" host:nil]; 
[bezelServicesTask performSelector:@selector(launchSystemPreferences:) withObject:@"Security.prefPane"]; 
+0

私はあなたとまったく同じスクリプトブリッジコードを持っています(例外コードを除いて) - 私はAppleサンプルから私のものを取り出しました。奇妙なことは、すでにPreferencePanesフォルダ内にあるprefpaneファイルをダブルクリックすると、システム環境設定が開き、ペインが即座に読み込まれるということです。 –

+0

私はScripting Bridgeを使ってテストしました。しかしそれは非常に遅いことが判明しました。 –

8

ファイルシステムパスを使用するより直接的な方法が示されているようNSWorkspaceと設定パネルのための適切なリソースのURLを使用することである。

urlStringが可能の一部のリストから取られた
NSString *urlString = @"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"; 
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlString]]; 

URL文字列https://macosxautomation.com/system-prefs-links.html

+1

パーフェクト!現在受け入れられている回答よりもはるかに優れた方法です。特に、プレフウィンドウの特定のセクションを開くことができます。私は特に、Security prefペインのアクセシビリティセクションにそれを公開したいと考えていたので、あなたの答えは特に私にとって重要でした。 – GuyGizmo

+0

2番目の考えでは、この方法はMacOS 10.9では動作しないので、完全ではありません。しかし、それは他の選択肢に後退し、10.10以降でこれを使用することは、世界の終わりではありません。 – GuyGizmo

+0

10.10+の場合は、これが受け入れられる回答である必要があります。完璧に動作します。 – Bryan

関連する問題