it-swarm.com.de

Einstellen des Wiedergabegeräts durch Ausführen eines Stapeldatei/Powershell-Skripts

Ich habe meinen Computer (Windows 7) an den Fernseher angeschlossen und wechsle das Ausgabegerät für den Ton sehr oft zwischen Digital Audio (S/PDIF) (High-Definition-Audiogerät) und meinem Headset (2-Corsair CA-HS1 USB) Headset)

Ich möchte in der Lage sein, eine Stapel-/Skriptdatei auszuführen, die dies für mich ändert, so dass ich nicht mit der rechten Maustaste auf Lautstärke> Abspielgeräte> "Ausgabegerät markieren" klicken und auf "Standard festlegen" klicken muss.

Ich weiß, es ist ein Luxusproblem, aber vielleicht kann ich etwas von jemandem lernen?

Alle Hilfe wird geschätzt!

21
haakonlu

Ich hatte genau die gleiche Anforderung wie Sie und NACH dem Stolpern über Ihr Posting habe ich Folgendes festgestellt:

https://web.archive.org/web/20131231034118/http://downloadsquad.switched.com/2010/06/16/windows-7-tip-how-to-change-the-default-audio- Gerät mit einem heißen/

Leider ist es keine native Windows-Funktion. Es ist der Download eines kleinen Open-Source-Scripting-Tools mit dem Namen AutoHotKey erforderlich. Es funktioniert jedoch einwandfrei und erfordert nur wenig Speicher (1 ~ 2,5 MB).

Das im Originalartikel enthaltene Skript funktioniert für mich nicht. Es sucht nach Aktivierten/Deaktivierten Geräten und ändert diesen Wert, anstatt das Standardgerät zu ändern. Ich habe es so geändert, dass jetzt zwischen zwei Standardgeräten gewechselt werden kann. Es funktioniert, indem Sie Ihr Sound-Kontrollfeld (mmsys) öffnen. cpl), dann scrollen Sie durch die Liste der Wiedergabegeräte bis zum zweiten Element in der Liste (das ist der {Down 2} -Part). Dies ist darauf zurückzuführen, dass meine Lautsprecher das zweite Element in meiner Liste sind um zu sehen, ob das Gerät Standard ist oder nicht. Wenn nicht, wird es als Standard festgelegt und das Fenster geschlossen. Wenn es bereits die Standardeinstellung ist, wird 2 weitere Male nach unten gescrollt und als Standardeinstellung festgelegt.

Sie müssen also die {Down 2} -Linien an Ihre eigene Geräteliste anpassen.

 #+a::
Run, mmsys.cpl
WinWait,Sound
ControlSend,SysListView321,{Down 2}
ControlGet, selectedDevice, List, Focused, SysListView321
Loop, Parse, selectedDevice, %A_Tab%
    if a_index <> 3
        continue
    else 
    {
        if A_LoopField <> Default Device
        {
            ControlClick,&Set Default
            ControlClick,OK
            WinWaitClose
            SoundPlay, *-1
            return
        }
        else
        {
            ControlSend,SysListView321,{Down 2}
            ControlClick,&Set Default
            ControlClick,OK
            WinWaitClose
            SoundPlay, *-1
            return
    }       
}
9
Hoppertron

So setze ich 'Line 1' als Wiedergabegerät ein:

start /min "" G:\......\nircmd.exe setdefaultsounddevice "Line 1"

NirCmd ist ein kleines Befehlszeilenprogramm, das Sie herunterladen können, um einige nützliche Aufgaben auszuführen, ohne eine Benutzeroberfläche anzuzeigen.

22
Dale Newton

Das folgende Skript ist in Windows 7 geschrieben und verwendet sendkeys. Es basiert auf anderen Ausschnitten, die ich gefunden habe, fügt jedoch hinzu, um sicherzustellen, dass die Auswahl konsistent ist und dass keine verstreuten Fenster angezeigt werden. Sie können SleepTime für Ihr System anpassen, wenn es weiterhin abgespielt wird eine Verknüpfung mit dem Index des Elements, das Sie im Fenster "Wiedergabegeräte" als ersten Parameter auswählen möchten .. Sie können eine neue "Symbolleiste" in Ihrer "Taskleiste" erstellen, um jedes Gerät mit einem einzigen Klick auszuwählen: Symbolleistenbild der Taskleiste

'===============================================================================
'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
2
Pagan Mace

Soweit ich es verstehe, gibt es keine Möglichkeit, dies programmgesteuert durchzuführen. Dies ist ein absichtlicher Entwurf, da Microsoft nicht wünscht, dass Anwendungen die vom Benutzer festgelegten Audioeinstellungen überschreiben.

Sie finden dieselbe Antwort hier , aber wenn Sie Lösungen haben, die Fenster manipulieren, können Sie hier schauen.

2
JPBlanc

Um nach Dale Newtons post, NirCmd zu suchen, ist dies eine großartige Möglichkeit. Wenn Sie es mit AutoHotKey koppeln, können Sie außerdem eine ausführbare Datei erstellen, die Ihre Geräte ändert, ohne dass bei jedem Start pesky CMD-Fenster geöffnet werden. Ich habe zum Beispiel zwei Quellen, zwischen denen ich ständig umschalte, eine ist mein Kopfhörer und die andere ist mein Monitor. Für meinen Monitor habe ich ein ahk-Skript erstellt, das Folgendes tut:

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir% ;I have nircmd in the same folder as these scripts
Run, nircmd setdefaultsounddevice "Acer X34-8" 1
Run, nircmd setdefaultsounddevice "Acer X34-8" 2

Und noch einer für meinen Kopfhörer mit den letzten beiden Zeilen wurde geändert in:

Run, nircmd setdefaultsounddevice "Headset Earphone" 1
Run, nircmd setdefaultsounddevice "Headset Earphone" 2

Danach können Sie jedes ahk-Skript zu einem Exe kompilieren und jedes Exe an ein Tastaturmakro binden, sodass Sie es mit ein paar Tastendrücken ausführen können. Ich persönlich verwende eine Corsair K95, daher verwende ich deren Software, um diese an meine "G" -Tasten zu binden.

Wenn Sie sich in Ihren Sound-Voreinstellungen befinden, können Sie alle Geräte umbenennen, um Namenskonflikte zu vermeiden.

2
BaneOfSerenity

Möglicherweise hängt das nicht mit dem Umschalten des Audiogeräts über ein Skript zusammen, aber ich habe auch einen Computer, der über HDMI an mein Fernsehgerät angeschlossen ist.

Wenn ich Videodateien auf dem Fernsehgerät ansehen möchte, verwende ich Media Player Classic Home Cinema. Dadurch kann ich das Audiogerät für MPH: HC in den Optionen angeben, ohne mein Standard-Audiogerät auf dem gesamten Computer umzustellen.

Wenn Ihre Nutzung ähnlich wie bei mir ist, löst MPC: HC möglicherweise Ihr Problem für Sie.

0
HungryHippos

Wenn Sie "nircmd setdefaultsounddevice speaker" in einem Anmeldeskript für Unternehmen oder Bildungsumgebungen verwenden, wird der Ton immer noch aus den Lautsprechern ausgegeben, wenn Kopfhörer angeschlossen sind.

0
js2010

Ich hatte ein HDMI-Gerät, das seinen Namen ständig ändert, sodass keine der vorhandenen Lösungen für mich funktionierte. 

Letztendlich endete ich mit dieser Powershell und der Verwendung der NirCmd -App. 

$name = "SMART*"

# list active audio playback devices.   (Note for cature devices change Render to Capture)
$device = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\*\" | where {$_."DeviceState" -eq 1} | foreach-object -Process {(Get-ItemPropertyValue -Path ($_.PSPath + "\Properties\") -Name "{a45c254e-df1c-4efd-8020-67d146a850e0},2")} | Where-Object {$_ -like $name}

C:\bin\NIRCMDC setdefaultsounddevice $device 1
C:\bin\NIRCMDC setdefaultsounddevice $device 2
0
Nigel Thorne