使用VBScript切换当前活动声音设备?

时间:2014-02-15 16:39:38

标签: audio windows-7 vbscript

我想在连接到计算机的两个音频设备之间切换(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

另一个文件有“耳机”而不是“扬声器”。

1 个答案:

答案 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