2013-03-21 100 views
1

我在xcode 3.2中有一個applescript xcode項目,並且正在嘗試更改系統音量...但它不起作用...它要麼停止nstimer,要麼不會什麼都沒有......set volume not working in xcode with 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的人機界面指南再次打擊)2)我相信最大值爲10,而不是50 50. – 11684 2013-03-24 08:01:33

+0

我已經得到它作爲一個簡單的applescript,只是不作爲applescript objc應用程序...我很確定100是最大值,但也許這是問題將嘗試和設置音量0到10 – 2013-03-25 08:17:25

+0

這並沒有工作,它是0到100 – 2013-03-25 18:04:36

回答

1

因此,您的實際問題只是如何從AppleScriptObjC記錄錯誤:

AppleScriptObjC將登錄腳本扔在控制檯的任何錯誤 - 只要看看在Xcode中底部窗格中。例如,在你的情況下,你應該看到類似「«腳本」的東西不理解«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個站?):

有缺省目錄之間的不良交互等參數和set volume的處理。當使用AppleScriptObjC時,「它」,並因此默認的直接參數,除非另有說明,是當前的腳本,並窒息在那。您可以通過說tell current application to強制「它」成爲一無所獲。 (或者,您可以通過使用舊式表格set volume x給出明確的直接參數,其中x是從0到7的實數。但是,這與您從get volume settings獲得的數字不匹配,只能讓您設置輸出音量,並且不會讓您將事物設置爲「靜音」。)

順便說一句,如果你的AppleScriptObjC項目非常簡單(特別是如果你不需要任何接口),你可以直接在AppleScript Editor中編寫它:選擇File> New from Template> Cocoa-AppleScript Applet,並使用正常的AppleScript on runon open處理程序,但現在您可以調用Cocoa中的任何東西。

+0

神聖的廢話它的作品,這完全有道理,雖然...我真的很感激兩個答案 – 2013-04-03 00:20:54