Я создаю приложение для Mac, которое должно начать диктовку (OSX 10.8). Поскольку нет возможности инициировать диктовку «непосредственно», лучший способ сделать это - через панель меню «Изменить»/«Начать диктовку», потому что у пользователя могут быть разные сочетания клавиш.Приложение какао не содержит баров меню, в соответствии с AppleScript
Вот простой скрипт, мое приложение вызовы (с помощью NSAppleScript
объекта):
tell application "System Events"
tell application process "MyApp"
tell menu bar 1
tell menu bar item "Edit"
tell menu "Edit"
click menu item "Start Dictation"
end tell
end tell
end tell
end tell
end tell
Вот результаты (NSLog
«d ошибку из AppleScript)
Error:-1719 System Events got an error:
Can’t get menu bar 1 of application process "MyApp". Invalid index.
Я сделал основной тест, чтобы посмотреть, что происходит
Мое приложение:
tell application "System Events"
tell application process "MyApp"
set x to menu bars
return x
end tell
end tell
result: <NSAppleEventDescriptor: [ ]>
Finder:
tell application "System Events"
tell application process "Finder"
set x to menu bars
return x
end tell
end tell
result: <NSAppleEventDescriptor: [ 'obj '{ 'form':'indx', 'want':'mbar', 'seld':1, 'from':'obj '{ 'form':'name', 'want':'pcap', 'seld':'utxt'("Finder"), 'from':null() } } ]>
Так в основном AppleScript говорит мне мое приложение не имеет строки меню? Я запускаю Accessibility Inspector, и, конечно же, есть панель меню (плюс я вижу ее ...).
Что происходит здесь не так?
Задержки не должны влиять на него по двум причинам: 1. Работает нормально с любым другим приложением, 2. Я действительно пробовал задерживать уже, безрезультатно. Кроме того, из того, что я могу сказать, элемент меню диктовки недоступен для приложений (он не отображается в меню редактирования в построителе интерфейса). Пожалуйста, поправьте меня, если я ошибаюсь. –
Как уже упоминалось, начало и остановка речи - это методы первого ответа, поэтому вы можете видеть их в меню «Правка», иначе вы не сможете подключить свои собственные элементы управления к этим методам в построителе интерфейса, и если вы сможете это сделать, тогда есть также программный способ начать и прекратить говорить ... Я просто не смотрел в это. Поэтому в любом случае вы можете добавить команды в свое приложение. – regulus6633