【问题标题】:Switch between three (3) audio devices using autohotkey (AHK)使用自动热键 (AHK) 在三 (3) 个音频设备之间切换
【发布时间】:2015-12-28 22:13:41
【问题描述】:

刚刚了解了 AHK。 我有三个音频设备(扬声器、耳机、电视)

无法弄清楚 AHK 语法以一键在它们之间切换,比如说 F2。 这个小脚本在两个设备之间切换,但我需要在三个设备之间切换。

F2::
if (toggle := !toggle) 
{ 
    run, nircmd.exe setdefaultsounddevice "tv"
} 
else 
{ 
    run, nircmd.exe setdefaultsounddevice "headphones"
}
return

所以我在想这样的事情,其中​​ device 是一个保存音频设备名称的变量:

device = "Speakers"
F2::
if (device = "Speakers") device = "TV"
else if (device = "TV") device = "Headphones"
else if (device = "Headphones") device = "Speakers"
run, nircmd.exe setdefaultsounddevice device
return

只是不能将其设为有效的 AHK 脚本。 任何帮助表示赞赏 附言nircmd 实用程序允许从命令行设置音频设备

谢谢。

UPD 已更新至此,但 %device% 为空,原因不明。 遵循手册(https://autohotkey.com/docs/Variables.htm),应该可以工作,但它没有:(

UPD2 正如@Blauhim 建议的那样,我在它之前有另一个键绑定,带有 return 语句。一旦我将脚本移到顶部,它就像一个魅力。谢谢。

【问题讨论】:

标签: autohotkey


【解决方案1】:
device := "Speakers" ; alternative: device = Speakers
F2::
if (device = "Speakers") 
    device := "TV" ; had to be on the next line
else if (device = "TV") 
    device := "Headphones" ; had to be on the next line
else if (device = "Headphones") 
    device := "Speakers" ; had to be on the next line
run, nircmd.exe setdefaultsounddevice %device%
return

【讨论】:

  • 谢谢,只需要在 IF 之后将 device := 移动到下一行以使其正常工作 但是 %device% 在到达时为空:run, nircmd.exe setdefaultsounddevice %device%
  • @monstro 它对我有用,msgbox 显示正确的值。 --> device := "Speakers" 必须在脚本的自动执行部分,这意味着:在它之前必须没有return(因此也没有热键、热字符串或类似的)。详情见autohotkey.com/docs/Scripts.htm#auto
  • @Blauhim 是的,你完全正确!我在它之前有另一个键绑定,带有 return 语句。一旦我将脚本移到顶部,它就像一个魅力。谢谢。
猜你喜欢
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-13
  • 1970-01-01
  • 1970-01-01
  • 2021-06-29
  • 1970-01-01
相关资源
最近更新 更多