我想在连接到计算机的两个音频设备之间切换(Windows 7 32位)。我查看了question,找到了nircmd。
现在,我可以创建两个VBS文件来在两个设备之间切换。我想知道我是否能找出当前的活动/默认声音设备是什么,然后我可以将所有内容放在一个文件中。
我目前的代码是 -
Set WshShell = CreateObject("WScript.Shell")
cmds=WshShell.RUN("L:\MyApps\NirCmd\nircmd.exe setdefaultsounddevice ""Speakers""", 0, True)
Set WshShell = Nothing
另一个文件有“耳机”而不是“扬声器”。
答案 0 :(得分:1)
这就是我目前解决的问题。我知道这很糟糕。它找不到当前的活动设备,而是将信息存储在一个文本文件中(必须已经存在!包含当前设备名称!)。是的,太可怕了。但考虑到我对VBScript的了解以及Windows注册表的当前知识,两者都非常接近零,这是我能想到的最好的!
我在这里发帖,因为其他地方缺乏简单的答案。如果有人有任何更好的解决方案,而不使用任何其他程序,我将非常感谢知道。
此外,如果有人想使用此代码,请更改文件路径和名称以适合您的。
Dim objFso, objFileHandle, strDisplayString
Set objFso = WScript.CreateObject("Scripting.FileSystemObject")
Set readObjFileHandle = objFso.OpenTextFile("L:\MyApps\NirCmd\CurrentDevice.txt", 1)
strDisplayString = readObjFileHandle.ReadLine()
readObjFileHandle.Close
Set writeObjFileHandle = objFso.OpenTextFile("L:\MyApps\NirCmd\CurrentDevice.txt", 2, "True")
If StrComp(strDisplayString, "Headphones", vbTextCompare) = 0 Then
'MsgBox "Headphones - switching to Speakers"
Set WshShell = CreateObject("WScript.Shell")
cmds=WshShell.RUN("L:\MyApps\NirCmd\nircmd.exe setdefaultsounddevice ""Speakers""", 2, True)
Set WshShell = Nothing
writeObjFileHandle.Write("Speakers")
Else
'MsgBox "Speakers - switching to Headphones"
Set WshShell = CreateObject("WScript.Shell")
cmds=WshShell.RUN("L:\MyApps\NirCmd\nircmd.exe setdefaultsounddevice ""Headphones""", 2, True)
Set WshShell = Nothing
writeObjFileHandle.Write("Headphones")
End If
writeObjFileHandle.Close