无法使用 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
我正在编写脚本以在 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