无法使用 applescript 使麦克风静音和取消静音

Unable to mute and unmute mic using applescript

我正在编写脚本以在 macOS

上打开 on/off 麦克风
if input volume of (get volume settings) is 0 then
    if storedInputLevel exists then
        set volume input volume storedInputLevel
        log "unmute it"
    end if
else
    tell application "System Events"
        -- save the current input volume setting --
        set storedInputLevel to input volume of (get volume settings)
    end tell
    set volume input volume 0
    log "mute it"
end if

以上脚本仅在麦克风音量的初始状态 > 0 时有效,否则会抛出错误“storedInputLevel”不存在。

storedInputLevel 的目的是分配用户用来配置的麦克风音量。 我的目标是切换麦克风音量 on/off。

感谢任何帮助

在第一行你要求一个不存在的变量。 exists不能用在局部变量上,只能用在属性或元素上。

基本上你需要一个地方来永久存储一个值。

在过去,您只需使用 属性 就可以做到这一点。但是由于脚本可以是 code-signed 并且修改 属性 会破坏签名,因此它不再可靠了。

另一种方法是将值存储在用户默认值中。该值存储在 属性 列表文件中 ~/Library/Preferences/com.myself.muteinput.plist

com.myself.muteinput 更改为您喜欢的任何内容。 System Events 不需要。

try
    set storedInputLevel to (do shell script "defaults read com.myself.muteinput value") as integer
on error
    set storedInputLevel to 0
end try

if input volume of (get volume settings) is 0 then
    set volume input volume storedInputLevel
    log "unmute it"
else
    set storedInputLevel to input volume of (get volume settings)
    do shell script "defaults write com.myself.muteinput value -int " & (storedInputLevel as text)
    set volume input volume 0
    log "mute it"
end if