在OSX Cocoa應用程序中,我想要一個打開「語音」首選項窗格的按鈕。那可能嗎?我只是想將它們保存時間去系統偏好設置>語音>文本到語音Cocoa按鈕打開系統首選項頁面
13
A
回答
18
下面是一個相當簡單的(和可靠)的方式來至少獲得系統偏好設置開放Speech.prefPane:
- (IBAction)openSpeechPrefs:(id)sender {
[[NSWorkspace sharedWorkspace] openURL:
[NSURL fileURLWithPath:@"/System/Library/PreferencePanes/Speech.prefPane"]];
}
但是,它不一定會切換到Text to Speech
選項卡,而是用戶選擇的最後一個選項卡。
實際上也可以切換到「文本到語音」選項卡,但它會涉及更多一點。您可以使用AppleScript將命令發送到系統首選項應用程序,但使用ScriptingBridge.framework
(請參閱Scripting Bridge Programming Guide)要快得多。
你需要的ScriptingBridge.framework
添加到您的項目,然後使用如下命令在終端下生成一個SBSystemPreferences.h
頭文件一起工作:
sdef "/Applications/System Preferences.app" | sdp -fh --basename SBSystemPreferences -o ~/Desktop/SBSystemPreferences.h
是SBSystemPreferences.h
頭加入你的項目,然後更改-openSpeechPrefs:
以下幾點:
- (IBAction)openSpeechPrefs:(id)sender {
SBSystemPreferencesApplication *systemPrefs =
[SBApplication applicationWithBundleIdentifier:@"com.apple.systempreferences"];
[systemPrefs activate];
SBElementArray *panes = [systemPrefs panes];
SBSystemPreferencesPane *speechPane = nil;
for (SBSystemPreferencesPane *pane in panes) {
if ([[pane id] isEqualToString:@"com.apple.preference.speech"]) {
speechPane = pane;
break;
}
}
[systemPrefs setCurrentPane:speechPane];
SBElementArray *anchors = [speechPane anchors];
for (SBSystemPreferencesAnchor *anchor in anchors) {
if ([anchor.name isEqualToString:@"TTS"]) {
[anchor reveal];
}
}
}
編輯:
使用ScriptingBridge.framework方法
0
對於誰碰上我在評論中提到的相同問題的人,只是去~/Desktop
(因爲我指定此位置),你會看到SBSystemPreferences.h
已創建。
但是,在此標題中,某些類聲明丟失。所以你必須明確地添加這些聲明。
在我的情況下,類「item」是未定義的。所以補充一點: @class SBSystemPreferencesItem;
然後編譯它,看看還有哪些東西缺失,需要添加哪個聲明。
1
NSURL *URL = [NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.speech?TTS"];
[[NSWorkspace sharedWorkspace] openURL:URL];
現金去訪問以下站點:https://macosxautomation.com/system-prefs-links.html
的URL列表以供參考:
Accessibility Preference Pane
Main x-apple.systempreferences:com.apple.preference.universalaccess
Display x-apple.systempreferences:com.apple.preference.universalaccess?Seeing_Display
Zoom x-apple.systempreferences:com.apple.preference.universalaccess?Seeing_Zoom
VoiceOver x-apple.systempreferences:com.apple.preference.universalaccess?Seeing_VoiceOver
Descriptions x-apple.systempreferences:com.apple.preference.universalaccess?Media_Descriptions
Captions x-apple.systempreferences:com.apple.preference.universalaccess?Captioning
Audio x-apple.systempreferences:com.apple.preference.universalaccess?Hearing
Keyboard x-apple.systempreferences:com.apple.preference.universalaccess?Keyboard
Mouse & Trackpad x-apple.systempreferences:com.apple.preference.universalaccess?Mouse
Switch Control x-apple.systempreferences:com.apple.preference.universalaccess?Switch
Dictation x-apple.systempreferences:com.apple.preference.universalaccess?SpeakableItems
Security & Privacy Preference Pane
Main x-apple.systempreferences:com.apple.preference.security
General x-apple.systempreferences:com.apple.preference.security?General
FileVault x-apple.systempreferences:com.apple.preference.security?FDE
Firewall x-apple.systempreferences:com.apple.preference.security?Firewall
Advanced x-apple.systempreferences:com.apple.preference.security?Advanced
Privacy x-apple.systempreferences:com.apple.preference.security?Privacy
Privacy-Accessibility x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility
Privacy-Assistive x-apple.systempreferences:com.apple.preference.security?Privacy_Assistive
Privacy-Location Services x-apple.systempreferences:com.apple.preference.security?Privacy_LocationServices
Privacy-Contacts x-apple.systempreferences:com.apple.preference.security?Privacy_Contacts
Privacy-Diagnostics & Usage x-apple.systempreferences:com.apple.preference.security?Privacy_Diagnostics
Privacy-Calendars x-apple.systempreferences:com.apple.preference.security?Privacy_Calendars
Privacy-Reminders x-apple.systempreferences:com.apple.preference.security?Privacy_Reminders
Privacy-Facebook x-apple.systempreferences:com.apple.preference.security?Privacy_Facebook
Privacy-LinkedIn x-apple.systempreferences:com.apple.preference.security?Privacy_LinkedIn
Privacy-Twitter x-apple.systempreferences:com.apple.preference.security?Privacy_Twitter
Privacy-Weibo x-apple.systempreferences:com.apple.preference.security?Privacy_Weibo
Privacy-Tencent Weibo x-apple.systempreferences:com.apple.preference.security?Privacy_TencentWeibo
Dictation & Speech Preference Pane
Dictation x-apple.systempreferences:com.apple.preference.speech?Dictation
Text to Speech x-apple.systempreferences:com.apple.preference.speech?TTS
Sharing Preference Pane
Main x-apple.systempreferences:com.apple.preferences.sharing
Screen Sharing x-apple.systempreferences:com.apple.preferences.sharing?Services_ScreenSharing
File Sharing x-apple.systempreferences:com.apple.preferences.sharing?Services_PersonalFileSharing
Printer Sharing x-apple.systempreferences:com.apple.preferences.sharing?Services_PrinterSharing
Remote Login x-apple.systempreferences:com.apple.preferences.sharing?Services_RemoteLogin
Remote Management x-apple.systempreferences:com.apple.preferences.sharing?Services_ARDService
Remote Apple Events x-apple.systempreferences:com.apple.preferences.sharing?Services_RemoteAppleEvent
Internet Sharing x-apple.systempreferences:com.apple.preferences.sharing?Internet
Bluetooth Sharing x-apple.systempreferences:com.apple.preferences.sharing?Services_BluetoothSharing
相關問題
- 1. 在一個首選項頁面隱藏首選項按鈕
- 2. Mac OS X - 系統首選項窗格不會打開
- 3. 如何用特定項目右擊打開首選項頁面?
- 4. 打開Android的系統更新頁面
- 5. 按鈕代碼首選項
- 6. 按鈕點擊時打開頁面
- 7. 表單按鈕打開新頁面onclick
- 8. 在angularjs中打開按鈕的頁面
- 9. 覆蓋系統首選項窗格?
- 10. 如何訪問iphone系統首選項
- 11. 從系統首選項窗格中的NIB打開一個窗口
- 12. 在新選項卡中打開頁面
- 13. 如何找出Eclipse中首選項頁面的首選項頁面ID?
- 14. 如何打開一個頁面,點擊模式按鈕打開
- 15. 如何在首頁按鈕上滑動打開滑動抽屜
- 16. 首次登錄時打開頁面
- 17. 如何使用AppleScript打開聯繫人首選項
- 18. 打開應用程序時,主頁按鈕的preseed在android系統
- 19. Crystal report打印按鈕打開pdf頁
- 20. Eclipse首選項頁面覆蓋恢復默認值按鈕監聽器
- 21. 打開android系統
- 22. 按鍵輸入時刷新頁面,但點擊鼠標打開文件系統
- 23. 如何在Express中按下提交按鈕時打開頁面?
- 24. 在頁面加載時,所有按鈕都被按下「打開」
- 25. 如何添加首選項頁面?
- 26. 考勤系統,單選按鈕
- 27. 打開新頁面時用戶選擇單選按鈕,然後單擊JSP
- 28. 如何在打開首選項屏幕上打開EditTextPreference
- 29. Firefox擴展開發如何調試首選項頁面?
- 30. HTML5 - 當按下按鈕打開的選項
這是真的很酷,謝謝。 – Raffael
我在終端輸入'sdef'命令,得到以下錯誤和警告:'sdp:error:class「pane」從未定義的類「item」繼承。 sdp:error:class「anchor」從未定義的類「item」繼承。因此我無法獲取頭文件。 – Gon
@Gon:什麼版本的OS X?當我有機會的時候,我會看看這個... – NSGod