1

我在 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 都被声明了...... .我需要为设置音量线声明一些东西吗?

4

1 回答 1

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命令?”</p>

简短版:添加tell current application to

tell current application to set volume output volume 50

是的,“新”音量参数的范围是 0 到 100。旧的兼容性参数从 0 到 7。(为什么?旧的控制面板音量滑块有 8 个档位。)

长版:

set volume默认直接参数和' 对其的处理之间存在不良交互。当使用 AppleScriptObjC 时,“它”,因此默认的直接参数,除非你另有说明,是当前脚本,并且set volume窒息。你可以通过说“它”来强迫“它”什么都不是tell current application to。(或者,您可以使用老式的形式给它一个明确的直接参数,set volume x其中x是从 0 到 7 的实数。但是,这与您从中获得的数字不匹配get volume settings,仅允许您设置输出音量,并且不允许您正确设置“静音”之类的东西。)

顺便说一句,如果你的 AppleScriptObjC 项目足够简单(特别是,如果你不需要任何接口),你可以直接在 AppleScript Editor 中编写它:选择 File > New from Template > Cocoa-AppleScript Applet,然后使用普通的 AppleScripton runon open处理程序,除了您现在还可以从 Cocoa 调用任何内容。

于 2013-04-01T18:59:45.650 回答