2011-07-11 11 views

Respuesta

18

La siguiente es una manera bastante fácil (y fiable) a por lo menos conseguir abra Preferencias del Sistema para la Speech.prefPane:

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

Sin embargo, no se cambiará necesariamente a la pestaña Text to Speech, sino a la última pestaña que el usuario haya seleccionado.

También es posible cambiar a la pestaña Texto a voz, pero es un poco más complicado. Puede usar AppleScript para enviar comandos a la aplicación de preferencias del sistema, pero usar el ScriptingBridge.framework (ver Scripting Bridge Programming Guide) es mucho más rápido.

Tendrá que añadir el ScriptingBridge.framework a su proyecto, y luego usar un comando como el siguiente en el terminal para generar un archivo de cabecera SBSystemPreferences.h para trabajar con:

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

añadir que SBSystemPreferences.h cabecera de su proyecto, a continuación, cambiar -openSpeechPrefs: a lo siguiente:

- (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:

Proyecto de ejemplo usando el método ScriptingBridge.framework: http://github.com/NSGod/OpenSystemPrefsTTS

+0

Esto está muy bien, gracias. – Raffael

+1

Escribí el comando 'sdef' en la terminal, recibí el siguiente error y advertencia:' sdp: error: la clase "panel" hereda de la clase indefinida "elemento". sdp: error: la clase "anchor" hereda de la clase indefinida "elemento" .' Por lo tanto, no puedo obtener el archivo de encabezado. – Gon

+0

@Gon: ¿qué versión de OS X? Voy a echar un vistazo a esto cuando tenga la oportunidad ... – NSGod

0

Para los chicos que dirige en el mismo tema que he mencionado en el comentario, sólo tiene que ir a la ~/Desktop (cos especifico esta posición) y verá el SBSystemPreferences.h ha sido creado.

Sin embargo, en este encabezado, faltan algunas declaraciones de clase. Entonces debes agregar estas declaraciones explícitamente.

En mi caso, la clase "elemento" no está definida. Así que agregue esto: @class SBSystemPreferencesItem;

Luego, compílelo y vea lo que aún falta, qué declaración debe agregarse.

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

Los créditos van a siguiente sitio: https://macosxautomation.com/system-prefs-links.html

Lista de direcciones URL de referencia:

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 
Cuestiones relacionadas