xcode - 使用 applescript cocoa objc 设置音量在 xcode 中不起作用

标签 xcode cocoa applescript-objc

我在 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 runon open 处理程序,只不过您现在还可以从 Cocoa 调用任何内容。

关于xcode - 使用 applescript cocoa objc 设置音量在 xcode 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15555380/

相关文章:

ios - AdHoc Beta 测试的代码签名

iphone - 在 View 中引用 UIButton

objective-c - 为什么我可以更改这个 const NSMutableSring?

objective-c - 如何让我的应用程序保持在全屏应用程序之上

cocoa - NSWindow,使用 Core Animation 时的奇怪角落

excel - 将千位分隔符添加到整数 - Applescript

Applescript:从 ApplescriptObjC 询问 Finder?

objective-c - Cocoa/Objective-C 获取一个 HFS 路径(路径 :to:desktop) from a posix path (path/to/desktop)

objective-c - 应用程序协同设计验证失败(更新应用程序)

ios - 设置 UIButton 目标