AppleScript çok yavaştı, bu yüzden ScriptingBridge'i System Preferences.app uygulamasını açmak için denedim ve geçerli paneli de çok yavaş olarak ayarlayın. Bunu yapmanın daha hızlı bir yolu var mı? DüzgünProgramlı olarak prefpane açmak için en hızlı yol?
cevap
Prefpane demetini açmak için Launch Services veya NSWorkspace'i kullanın. Bu açık (1) komutunun programatik sürümüdür. urlString
mümkün bazı listesinden alınmıştır
NSString *urlString = @"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility";
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlString]];
: gösterildiği gibi
Gerçekten: '[[NSWorkspace sharedWorkspace] openFile: @"/Path/To/Foo.prefPane "];' – mxcl
Üçüncü Şahıs prefpane'inizin nerede kurulduğunu anlamanız gerektiğinden, genellikle bu konuya ilgi duymuyorum. Ne yazık ki, paket tanımlayıcılarını uygun NSWorkspace çağrısı ile kullanmak işe yaramıyor. – mxcl
Sadece iki yer olabilir ve her ikisine de bakmak için 'NSSearchPathForDirectoriesInDomains' kullanabilirsiniz. –
Hayır beyin:
system("open -a System\\ Preferences");
Ve açılacak Bölmesi seçmek için:
open /System/Library/PreferencePanes/Internet.prefPane
open /System/Library/PreferencePanes/DateAndTime.prefPane
...
biraz deneme yanılma, /System/Library/PreferencePanes/
ilk sağ dosyasıyla bulundu sağlanmıştır.
Eminim, bu son hile yapmak için bir daha kakao yolu var, bu ... her dil ile çalışır. Ayrıca
: üçüncü taraf uygulamalar,
*.prefPane
dosyalarını yüklemek orası gibi ... Bu yollarıkontrol etmek isteyebilirsiniz/Library/PreferencePanes/ ~/Library/PreferencePanes/
tam olarak nasıl Scripting'i kullandınız Köprü?
Bu kod ile çalıştı ve bunu oldukça iyi performans düşünüyorum: BuradaSystemPreferencesApplication *SystemPreferences = [SBApplication applicationWithBundleIdentifier:@"com.apple.systempreferences"];
@try {
[SystemPreferences activate];
SystemPreferences.currentPane = [SystemPreferences.panes objectWithID:@"com.apple.preference.security"];
} @catch (NSException *exception) {
NSLog(@"%@", [exception description]);
}
Kakao sadece eğlence için başka bir seçenek olmakla birlikte, hiç belgelenmiş (ve sadece sistem tercihi bölmeleri ile çalışır) değil. Performansları karşılaştırmak için kullanabilirsiniz, ancak üretim kodunda kullanmayın.
id bezelServicesTask = [NSConnection rootProxyForConnectionWithRegisteredName:@"com.apple.BezelServices" host:nil];
[bezelServicesTask performSelector:@selector(launchSystemPreferences:) withObject:@"Security.prefPane"];
Sizinle tam olarak aynı Scripting Bridge koduna sahibim (iyi, istisna kodu hariç) - Apple örneğinden aldım. Tuhaf olan şey, PreferencePanes klasörünün içinde önceden prefpane dosyasına çift tıklarsam, Sistem Tercihleri açılır ve bölmeyi anında yükler. –
Scripting Bridge kullanarak test ettim. Ama son derece yavaş olduğu ortaya çıktı. –
dosya sistemi yolu ile daha doğrudan bir usul NSWorkspace ile tercih bölmesine uygun bir kaynak URL kullanmaktır URL dizeleri https://macosxautomation.com/system-prefs-links.html
Mükemmel! Mevcut kabul edilen cevaptan çok daha iyi bir yöntem, özellikle bir pref bölmesinde belirli bir bölüme açmanıza izin verdiği için. Güvenlik pref panelinin Erişilebilirlik bölümüne açık olması için özel olarak bakıyordum, cevabınız özellikle benim için önemliydi. – GuyGizmo
İkinci düşüncede, bu yöntem MacOS 10.9'da çalışmadığı için oldukça mükemmel değildir. Ama dünyanın diğer seçeneklerine geri dönmek ve bunu 10.10 ve sonrası için kullanmak değil. – GuyGizmo
10.10+ için, bu kabul edilen cevap olmalıdır. Mükemmel çalışıyor. – Bryan
- 1. MSVS C# try-catch blokları kaldırmak için en hızlı yol?
- 2. Bir float [] bir bayt [] dönüştürmek için en hızlı yol nedir?
- 3. Web sayfalarını tek bir web sitesi içinde en hızlı şekilde kazımak için en hızlı yol
- 4. Dizin verilerini .NET'te almak için en hızlı yol.
- 5. Birçok üst ve alt kayıt eklemek için en hızlı yol
- 6. Bir veri çerçevesindeki sütun i çarpmak için en hızlı yol;
- 7. Android'de kilidini açmak için bir yol mu?
- 8. Bir dosyayı TrueCrypt diskten belleğe programlı olarak okumak için bir yol var mı?
- 9. Bir metin dosyasını belleğe yüklemek için en hızlı/en temiz yol
- 10. Azure webjob için programlı zamanlamayı programlı olarak güncelle
- 11. Başka bir öğenin hangi iki öğesinin python'a en yakın olduğunu bulmak için en hızlı yol
- 12. Umbraco'da oturum açmak için en iyi uygulama nedir?
- 13. İki vektörü R'de lockstep olarak sıralamak için en etkili yol?
- 14. Destek açmak için bir yol :: posix_time :: ptime bir __int64 içine
- 15. Çözümümden bir dosya açmak için VS2012 Hızlı Başlatma'yı kullanabilir miyim?
- 16. ProgramStatic olarak oturum açmak için PerformanceCounter
- 17. Neden CLion'da bir dosyayı açmak için göreli yol kullanamıyorum?
- 18. PHP'de En Hızlı IPC
- 19. Bir değerin önünü açmak ve açmak için bir yol var mı?
- 20. Görüntüleri belleğe yüklemek için en iyi yol?
- 21. Döngü en hızlı yöntem
- 22. IIS'yi programlı olarak durdurun ve başlatın. Hızlı ve güvenli bir şekilde
- 23. Sabit üstbilginin altında görünen görünür divlerin listesini izlemek için en hızlı yol nedir?
- 24. En Hızlı Yolu
- 25. Bağlantısını açmak için bağlantı
- 26. Programlı olarak yakın kapat penceresi
- 27. En iyi yol C#
- 28. Pencereyi en hızlı şekilde nasıl gösterirsiniz?
- 29. Dizideki basit veri türlerini belirli konumlara taşımak için en hızlı yol
- 30. En Olumsuz Çifte Olmak İçin Doğru Yol
Sistem Preferences.app uygulamasının nasıl çalıştırıldığına bakılmaksızın can sıkıcı şekilde yavaş olduğunu fark ettiniz mi? Çünkü bunu fark ettim. –
Bir önceki sorunuzu ve bunu göz önüne alarak, bir göz atmak isteyebilirsiniz: http://0xced.blogspot.com/2008/02/upgrading-system-preference-pane.html – 0xced
Harika makale 0xced, teşekkürler! –