我在 xcode 3.2 中有一个 applescript xcode 项目,并且正在尝试更改系统音量...但是它不起作用...它要么停止 nstimer,要么根本不执行任何操作...
有没有办法记录错误以便我可以查明问题?
这是我的代码
set newVolume to 50
set volume output volume newVolume
textName's setStringValue_(currentVolume)
set currentVolume to newVolume
obv 这是一个更加简洁的版本,但这实际上不起作用...它位于 NSTimer 内部,但是即使不在 NSTimer 内,它仍然不起作用...newVolume、currentVolume 和 textName 都是已声明...我需要为设定的音量线声明一些内容吗?
最佳答案
所以,您的实际问题只是如何从 AppleScriptObjC 记录错误:
AppleScriptObjC 会将脚本中抛出的任何错误记录到控制台——只需查看 Xcode 的底部 Pane 即可。例如,在您的情况下,您应该看到类似“《script》不理解《aevtstvl》消息”的内容。 (这不是很清楚,但它告诉您您的脚本向脚本对象发送了一个 setvolume
命令,该脚本对象没有处理程序。)如果您想捕获并记录如果您自己出错,您可以将麻烦的部分放入 try
/on error
block 中,并在错误处理程序中自行处理。
如果您感到特别好奇,还可以打开 NSScriptingDebugLogLevel
首选项,如下所示:
defaults write com.me.myapp NSScriptingDebugLogLevel 1
...AppleScriptObjC 将记录有关通过桥的任一方式发送的每条消息的信息。 (将其设置为 0 或使用默认删除将其关闭。)
这是错误日志。现在,你实际上并没有问,但我无论如何都要回答,是“如何修复我的设置音量
命令?”
简短版本:添加告诉当前应用程序
:
tell current application to set volume output volume 50
是的,"new"音量参数的范围是 0 到 100。旧的兼容性参数的范围是从 0 到 7。(为什么?旧的控制面板音量 slider 有 8 个档位。)
长版:
默认直接参数和设置音量
对其的处理之间存在不良交互。当使用 AppleScriptObjC 时,“it”以及默认的直接参数(除非您另有说明)是当前脚本,并且 setvolume
会被它阻塞。您可以通过说告诉当前应用程序
来强制“it”不存在。 (或者,您可以使用老式形式 setvolume x
为其指定显式直接参数,其中 x
是 0 到 7 之间的实数。但是,这并不与您从获取音量设置
获得的数字不匹配,仅允许您设置输出音量,并且不允许您正确设置“静音”等内容。)
顺便说一句,如果您的 AppleScriptObjC 项目足够简单(特别是,如果您不需要任何界面),您可以直接在 AppleScript 编辑器中编写它:选择"file">“从模板新建”>“Cocoa-AppleScript Applet”,并使用普通的 AppleScript on run
和 on open
处理程序,只不过您现在还可以从 Cocoa 调用任何内容。
关于xcode - 使用 applescript cocoa objc 设置音量在 xcode 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15555380/