2011-07-11 93 views

回答

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方法

示例項目: http://github.com/NSGod/OpenSystemPrefsTTS

+0

這是真的很酷,謝謝。 – Raffael

+1

我在終端輸入'sdef'命令,得到以下錯誤和警告:'sdp:error:class「pane」從未定義的類「item」繼承。 sdp:error:class「anchor」從未定義的類「item」繼承。因此我無法獲取頭文件。 – Gon

+0

@Gon:什麼版本的OS X?當我有機會的時候,我會看看這個... – NSGod

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