Setting playback device by executing a batch file / powershell script

后端 未结 6 1432
太阳男子
太阳男子 2021-01-31 04:21

I\'ve got my computer(Windows 7) hooked up to the TV, and i very often change output device for sound between Digital Audio (S/PDIF)(High definition audio device) and my headset

6条回答
  •  感动是毒
    2021-01-31 05:02

    The following script is written in Windows 7 and uses sendkeys. It is based on other snippets I found but adds to them to ensure selection is consistent and stray windows are not left displayed. You may want to adjust SleepTime for your system if it still plays up. Call the script using a shortcut with the index of the item you wish to select in the Playback Devices window as first parameter. You can create a new 'toolbar' on your 'taskbar' to select each device with a single click: Taskbar toolbar picture

    '===============================================================================
    'This script uses sendkeys to select the Sound Output device
    'First parameter should be the desired device number in 'Playback Devices' list
    '===============================================================================
    Option Explicit
    
    Const SleepTime = 200
    
    Dim WindSh
    
    '===============================================================================
    'MAIN ROTUINE
    '===============================================================================
    'Check the command line input
    if ( Wscript.Arguments.Count <> 1)  then
      MsgBox "You must provide a single integer arguement representing the device number", vbinformation + vbokonly, Wscript.ScriptName
      Wscript.Quit 1
    elseif ( false = IsNumeric( Wscript.Arguments.Item(0) ) )  then
      MsgBox "The arguement provided was not an integer number: " & Wscript.Arguments.Item(0), vbinformation + vbokonly, Wscript.ScriptName
      Wscript.Quit 2
    End If
    
    set WindSh = CreateObject("Wscript.Shell")
    WindSh.run("control.exe mmsys.cpl")
    do while (WindSh.AppActivate("Sound") = false)
      WScript.Sleep SleepTime
    loop
    WindSh.sendkeys("{DOWN " & Clng( Wscript.Arguments.Item(0) ) & "}")
    WScript.Sleep SleepTime
    WindSh.sendkeys("{TAB 2}")
    WScript.Sleep SleepTime
    WindSh.sendkeys("{ENTER}")
    WScript.Sleep SleepTime
    WindSh.sendkeys("%{F4}")
    WScript.Sleep SleepTime
    if (WindSh.AppActivate("Sound") = true) then
      WindSh.sendkeys("%{F4}")
    end if
    

提交回复
热议问题