2011-07-11 32 views

Trả lời

18

Sau đây là cách khá dễ dàng (và đáng tin cậy) để ít nhất có được Tùy chọn hệ thống mở cho Speech.prefPane:

- (IBAction)openSpeechPrefs:(id)sender { 
    [[NSWorkspace sharedWorkspace] openURL: 
    [NSURL fileURLWithPath:@"/System/Library/PreferencePanes/Speech.prefPane"]]; 
} 

Tuy nhiên, nó không nhất thiết phải được chuyển sang tab Text to Speech, mà là tab cuối cùng mà người dùng đã chọn.

Có thể thực sự chuyển sang tab Văn bản thành giọng nói, nhưng có liên quan nhiều hơn một chút. Bạn có thể sử dụng AppleScript để gửi lệnh đến ứng dụng Tùy chọn hệ thống, nhưng sử dụng ScriptingBridge.framework (Xem Scripting Bridge Programming Guide) sẽ nhanh hơn nhiều.

Bạn sẽ cần phải thêm ScriptingBridge.framework để dự án của bạn, và sau đó sử dụng một lệnh như sau trong Terminal để tạo ra một tập tin SBSystemPreferences.h tiêu đề làm việc với:

sdef "/Applications/System Preferences.app" | sdp -fh --basename SBSystemPreferences -o ~/Desktop/SBSystemPreferences.h

Thêm vào đó SBSystemPreferences.h tiêu đề để dự án của bạn, sau đó thay đổi -openSpeechPrefs: như sau:

- (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]; 
     } 
    } 
} 

EDIT:

dự án mẫu sử dụng phương pháp ScriptingBridge.framework: http://github.com/NSGod/OpenSystemPrefsTTS

+0

Đây là thực sự mát mẻ, cảm ơn bạn. – Raffael

+1

Tôi đã gõ lệnh 'sdef' trong thiết bị đầu cuối, nhận được lỗi và cảnh báo sau:' sdp: error: class "pane" kế thừa từ lớp không xác định "mục". sdp: lỗi: lớp "neo" kế thừa từ lớp không xác định "mục" .' Vì vậy, tôi không thể lấy tệp tiêu đề. – Gon

+0

@Gon: phiên bản OS X nào? Tôi sẽ xem xét điều này khi tôi có cơ hội ... – NSGod

0

Đối với những kẻ đã chạy vào cùng một vấn đề mà tôi đã đề cập trong các bình luận, chỉ cần đi đến ~/Desktop (cos tôi chỉ định vị trí này) và bạn sẽ thấy các SBSystemPreferences.h đã được tạo.

Tuy nhiên, trong tiêu đề này, một số khai báo lớp bị thiếu. Vì vậy, bạn phải thêm các khai báo này một cách rõ ràng.

Trong trường hợp của tôi, lớp "mục" chưa được xác định. Vì vậy, hãy thêm điều này: @class SBSystemPreferencesItem;

Sau đó, biên dịch và xem nội dung nào còn thiếu, khai báo nào cần được thêm vào.

1
NSURL *URL = [NSURL URLWithString:@"x-apple.systempreferences:com.apple.preference.speech?TTS"]; 
[[NSWorkspace sharedWorkspace] openURL:URL]; 

Tín đi vào trang web sau đây: https://macosxautomation.com/system-prefs-links.html

Danh sách các URL để tham khảo:

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 
Các vấn đề liên quan