2013-03-21 5 views
1

У меня есть проект xcode applescript в xcode 3.2 и я пытаюсь изменить системный том ... однако он не работает ... он либо останавливает nstimer, либо не делает ничего вообще ...установить громкость не работает в xcode с applescript cocoa objc

Есть ли способ зарегистрировать ошибки, чтобы я мог точно определить проблему?

Вот мой код

set newVolume to 50 
set volume output volume newVolume 
textName's setStringValue_(currentVolume) 
set currentVolume to newVolume 

OBV это гораздо более конденсироваться версия, но это буквально не работает ... он внутри из NSTimer, но, даже если не в пределах NSTimer она до сих пор не работа ... newVolume, currentVolume и textName объявлены ... мне нужно объявить что-то для строки тома набора?

+0

1) Apple не любит приложения, устанавливающие громкость (рекомендации Apple по человеческому интерфейсу снова наступают). 2) Я считаю, что максимум равен 10, а не 50. – 11684

+0

Я получил его как простой аппликатор, просто не как applescript objc app ... и я уверен, что 100 - это максимум, но, возможно, проблема в том, что проблема будет пытаться установить громкость 0 до 10 –

+0

Это не сработало, и это от 0 до 100 –

ответ

1

Итак, ваш актуальный вопрос просто, как регистрировать ошибки из AppleScriptObjC:

AppleScriptObjC будет регистрировать любые ошибки, возникающие в сценарии на консоль - просто посмотреть в нижней панели в Xcode. Например, в вашем случае вы должны увидеть что-то вроде «« script »не понимает сообщение« aevtstvl ». (Это не очень ясно, но он говорит вам, что ваш скрипт отправил команду set volume объекту скрипта, у которого не было обработчика.) Если вы хотите самостоятельно записывать и регистрировать ошибки, вы можете поместить неприятные разделы внутри блока try/on error и обработать его самостоятельно в обработчике ошибок.

Если вы чувствуете дополнительным любознательны, вы можете также включить NSScriptingDebugLogLevel предпочтения, как это:

defaults write com.me.myapp NSScriptingDebugLogLevel 1 

... и AppleScriptObjC будет регистрировать информацию о каждом сообщении, отправленном либо путь через мост. (Установите его на 0 или используйте defaults delete, чтобы отключить его.)

Это ошибка регистрации. Теперь, что вы на самом деле не спросить, но я буду отвечать в любом случае, был «Как исправить мою set volume команду?»

Краткая версия: добавить tell current application to:

tell current application to set volume output volume 50 

И да, диапазон для «новых» параметров объема составляет от 0 до 100. старая совместимость один идет от 0 до 7.

Длинная версия (Почему старая панель управления громкости ползунок был 8 остановок?.):

Там в плохое взаимодействие между файлом по умолчанию ect и set volume. При использовании AppleScriptObjC, «it» и, следовательно, прямой параметр по умолчанию, если вы не говорите иначе, является текущим сценарием, и set volume дросселирует это. Вы можете заставить «это» быть ничем, говоря tell current application to. (В качестве альтернативы вы можете дать ему явный прямой параметр, используя старую форму set volume x, где x - действительное число от 0 до 7. Однако это не соответствует номерам, которые вы получаете от get volume settings, только позволяет вам устанавливать выходные данные том, и не позволяет вам правильно устанавливать такие вещи, как «приглушенный».)

И, кстати, если ваш проект AppleScriptObjC достаточно прост (в частности, если вам не нужен какой-либо интерфейс), вы можете написать его непосредственно в редакторе AppleScript: выберите «Файл»> «Создать» из «Шаблон»> «Cocoa-AppleScript» Апплет и использовать обычные обработчики AppleScript on run и on open, за исключением того, что теперь вы можете также вызывать что-либо из Cocoa.

+0

Святое дерьмо это работает, это имеет смысл, хотя ... Я очень ценю оба ответа –

Смежные вопросы