Audio Gerät via Hotkey wechseln - Windows 7

NMB

Lt. Junior Grade
Dabei seit
Aug. 2008
Beiträge
433
#1
Hi Leute,

dieser Beitrag ist für Leute die Zwei (oder mehr) Audio Geräte, wie z.B. Soundkarte und Onboard Sound haben und beides nach belieben nutzen möchten.

Es gibt verschiedene Software Möglichkeiten das Standard Audio Gerät zu wechseln, leider funktionieren sie unter win 7 nicht so richtig gut und Hotkeys werden auch nicht wirklich unterstützt.

Für die die es dennoch Interessiert:

- Vista Audio Changer
- Quick Sound Switch (eigentlich sehr geil nur nicht für win 7)
- System Tray Audio Device Switcher (STADS)

Heute bin ich aber über eine weitere Möglichkeit gestolpert, die mir mehr als Zusagt! Gleich vorweg das Script ist nicht auf meinem Mist gewachsen. Ich übersetze quasi nur!
--> Quelle


Was ihr benötigt: AutoHotkey

1. AutoHotkey runter laden und installieren.

2. Legt zwei AutoHotkey Dateien an, z.b. Headset.ahk und Boxen.akh (lasst eurer Kreativität freien lauf :D )

3. Fügt folgendes Skript in die zwei besagten .ahk Dateien ein:

Run, RunDll32.exe shell32.dll`,Control_RunDLL mmsys.cpl`,`,0
WinActivate, Sound
WinWaitActive, Sound, , 2
if ErrorLevel
{
MsgBox, Sound Window not found!
return
}
ControlSend, SysListView321, {DOWN 1}, Sound
ControlSend, Button2, {DOWN 2}{ENTER}, Sound
WinClose, Sound
_______________________
Wichtig:

Dieses Script wählt das oberste Audio Gerät der Liste unter "Systemsteuerung -> Hardware und Sound -> Audiogeräte verwalten" als Standard Audiogerät!

Im obigen Fall also das oberste Audio Gerät!
Für die zweite Datei ändert ihr nur das fette {Down 1} z.b. in {Down 3} wenn das nächste Audiogerät das ihr verwenden wollt an dritter Position in der Liste steht.

(Ihr könnt auch alle anderen Audiogeräte so ansteuern! Wenn ihr mehr als zwei habt und braucht :freak:)
_______________________

4. Legt euch Verknüpfungen der zwei Dateien auf den Desktop und definiert in den Eingenschaften einen Hotkey! Bei bedarf könnt ihr auch noch ein schönes Symbol definieren.

Heaphone: http://www.iconarchive.com/show/windo...
Speaker: http://www.iconarchive.com/show/windo...

5. Fertig!!

Ihr könnt nun beliebig mit den zwei hotkey z.b. zwichen Headphone und Speaker hin und her schalten, einzieges Manko nicht während ein prog läuft. Es muss immer neu gestartet werden und in den Einstellungen muss als Audiogerät Windows Standard eingestellt sein.

Hoffe es Hilft jemandem, für mich ist damit heute schon Weihnachten :D
 

jan4321

Lt. Commander
Dabei seit
Juli 2007
Beiträge
1.876
#2
Cool funktioniert wunderbar ;) BIG THX
endlich hat das manuelle umschalten zwischen Klinke (Headset) und Optischen Ausgang (zu meinem AV-Receiver) ein Ende
 
Zuletzt bearbeitet:

loomx

Lt. Junior Grade
Dabei seit
Mai 2010
Beiträge
277
#3
Yep. danke auch von mir. Brauch ich zwar noch nicht, aber demnaechst steht auch mal zusaetzlich ein Receiver via HDMI an. Gleich mal in die Bookmarks :).
 

lynxx

Lt. Junior Grade
Dabei seit
Feb. 2005
Beiträge
349
#4
Danke sowas suche ich schon lange, aber wieso neustarten? Ich verwende Win7/x64 und kann während ein Film/Musik läuft umschalten ohne die Programme neuzustarten (Media Player Classic & WinAmp).
Ausgabegeräte sind Logitech USB-Headset und Realtek Digital Output Onboard.
 

NMB

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Aug. 2008
Beiträge
433
#5
@lynxx, habs nur mit AIMP2 getestet, da lief der alte ton weiter wenn ich gewechselt hab. aber hast recht beim vlc kann ich auch im betrieb wechseln, ist also programmabhängig...

@all freut mich das ich helfen konnte, habe da selber ewig drauf gewartet und mich heute morgen sowas von gefreut, das es es gleich hier posten musste :)
 

NMB

Lt. Junior Grade
Ersteller dieses Themas
Dabei seit
Aug. 2008
Beiträge
433
#7
yo dachte ich auch hab aber im aimp2 windows default eingestellt, aber der macht da nicht mit, bei musik weiß ich aber vorher ob ich sie mit kopfhörer hören will oder nicht, im vlc ist es aber sehr geil das es im betrieb funxt, da öfters meine freundin hier tv guckt und dann schalte ich jetzt einfach um ,

ps: ich finds immer noch so geil das das geht :D
 

Crimvel

Lt. Commander
Dabei seit
Feb. 2011
Beiträge
1.596
#9
Mein Held! Danke für die Anleitung.
Works like a charm!
 
Dabei seit
Sep. 2011
Beiträge
1
#10
Hallo,

danke für dein Script. Danach hab ich schon ewig gesucht.
Ich hab gleich noch ein paar Änderungen gemacht.
Falls jemand daran interessiert poste ich hier mal den Code

Änderungen:
  • Das Script residiert im Symbolbereich
  • Hotkeys werden direkt im Skript behandelt (Keine Notwendigkeit für Desktop Icons)
  • Zeigt aktives Audiogerät nach Wechsel als Tray Balloon Popup
  • Funktioniert auch mit schön geöffnetem Soundfenster
  • Standard Kommunikationsgerät wird auch mit umgeschaltet

Getestet mit AutoHotkey_L v1.1.04.00 auf deutschem Windows 7 x64

Die Hotkeys und Gerätename können in den ersten Zeilen geändert werden.
Auch können weitere Geräte hinzugefügt werden.
Die Raute steht hier für die <Windows> Taste (Weitere Tasten siehe Hilfe).
Das 'up' bedeutet, dass erst beim Loslassen der Taste gewechselt wird.

Code:
; <Windows>+<BildAuf> wählt Gerät 0
#PgUp up:: SelectAndShowAudioDevice(0,"Lautsprecher")

; <Windows>+<BildAb> wählt Gerät 1
#PgDn up:: SelectAndShowAudioDevice(1,"Kopfhörer")

  
SelectAndShowAudioDevice(deviceNumber, deviceName)
{
  error := ActivateAudioDevice(deviceNumber)
  if error
    TrayTip % "Fehler beim Aktivieren von " . deviceName, % error
  else
    TrayTip % deviceName . " aktiv", % "Audiowiedergabe erfolgt über " . deviceName
}

ActivateAudioDevice(deviceNumber)
{
  IfWinNotExist Sound
  {
    ; Öffne Sound Fenster
    Run % "RunDll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,0"
    WinWait Sound,,2
    if ErrorLevel
      Return "Sound Fenster nicht gefunden"
    CloseSoundWindowAtEnd := True
  }

  ControlSend SysListView321, {HOME} ; Zum Anfang der Liste mit Pos1
  ControlSend SysListView321, {DOWN %deviceNumber%} ; Zum Audiogerät navigieren
  SetControlDelay -1 ; Aktiviere schnellen Mausklick
  ControlClick Button2 ; Mausklick auf 'Als Standard'

  if CloseSoundWindowAtEnd
    WinClose
}
 

X__

Lt. Junior Grade
Dabei seit
Okt. 2002
Beiträge
463
#13
Hi, da ich mich auch gerade damit beschäftigt habe
und mit der AutoIt-Lösung nicht so wirklich zufrieden war (da sich immer das Wiedergabegerätefenster öffnet) ,
wollte ich gerne diese Alternative mal aufzeigen:

Ich habe das Programm NirCmd benutzt (das nebenbei bemerkt noch allerhand andere Sachen kann ;) )

Die Umschaltung der Geräte erfolgt durch das Kontextmenü des Desktops, wo sich zwei
(oder mehr) neue Einträge befinden (also kein Hotkey - aber trotzdem komfortabel)
Die Hotkeyfunktion kann man aber durch die unten verlinkte Freeware "HotKeyMan" integrieren.
Damit kann man in einem Spiel das Device umschalten, ohne zum Desktop zu müssen.

Ich habe folgende Batch-Datei zum Installieren gebaut (muss als Administrator ausgeführt werden):

Code:
copy "%~dp0nircmd.exe" C:\Windows\
copy "%~dp0nircmdc.exe" C:\Windows\
call regedit.exe /s "%~dp0Register.reg"
Die Datei Register.reg habe ich auch dazu gebastelt:
PHP:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\Headset G35]
"Icon"="C:\\Windows\\System32\\ddores.dll,6"

[HKEY_CLASSES_ROOT\Directory\Background\shell\Headset G35\command]
@="nircmd.exe setdefaultsounddevice \"Headset G35\""

[HKEY_CLASSES_ROOT\Directory\Background\shell\Lautsprecher]
"Icon"="C:\\Windows\\System32\\ddores.dll,1"

[HKEY_CLASSES_ROOT\Directory\Background\shell\Lautsprecher\command]
@="nircmd.exe setdefaultsounddevice \"Lautsprecher\""
Wie ihr schon seht, habe ich die Standard-Lautsprecher
und ein G35 Headset. Die Zeilen könnte man natürlich beliebig anpassen,
(bzw. muss man anpassen, wenn man z. B. kein Soundddevice mit dem
Namen "Headset G35" ;)) hat und erweitern.
Angenehm finde ich auch die Nutzung von Systemicons aus der Windows-Datei "ddores.dll"

Hat zwar so noch keine Hotkey-Funktion, ist aber im Kontextmenü des Desktops
und man kann schnell und komfortabel umschalten, ohne dass sich das
Wiedergabegerätefenster öffnet.

Vielleicht kanns ja jemand gebrauchen.

Gruß

Edit:im Anhang alle Dateien, Achtung: die NirCmd-Version ist die 64 Bit-Version.
Für 32Bit müsste man nur die beiden NirCmd.exe durch die 32Bitter vom Hersteller ersetzen.

Edit 2: Die Hotkeyfunktion könnte man (beispielsweise) über die Freeware HotKeyMan erzeugen.

Edit 3: Ich habs grade mal mit dem HotKeyMan probiert (siehe Screenshot) :
Das Umschalten des Sounddevices funktioniert sogar aus dem laufendem
Spiel (getestet mit Darkstar One) heraus ohne unerwünschte Nebenwirkungen
(switch to desktop etc.). Wichtig scheint zu sein, dass man nicht die
Konsolenversion benutzt (NirCmdc.exe), denn damit wurde ich aus dem Spiel
zum Desktop zurückgeworfen. Mit der normalen Version klappt alles so, wie es soll.
 

Anhänge

Zuletzt bearbeitet:
Dabei seit
Feb. 2012
Beiträge
2
#15
Hi ihr, ich habe eben Euren Thread gefunden, als ich nach einer Möglichkeit gesucht habe, das standard-Audiogerät per Knopfdruck zu ändern. Ich habe dazu noch eine Frage und muss direkt dazu sagen, dass ich wenig bis kaum Ahnung vom Programmieren habe.
Bisher ist es ja wohl so, dass man das Zusatzprogramm 'AutoHotKey' oder ähnliches braucht.
Ich habe bei mir vor einiger Zeit mal ein kleines VBScript eingerichtet (Script kam aus dem Netz), dass den PC in den Ruhezustand versetzt. Dieses habe ich dann per IntelliType (Microsoft Tastatur mit Zusatztasten) einer Taste zugewiesen, und mir damit eine Taste für den Ruhezustand gebastelt, weil meine Tastatur keine Sleep-Taste hat.
Nun habe ich mir ein UBS Headset zugelegt und würde gerne mit ein oder zwei Tasten das aktive Audiogerät ändern können. Geht das auch mit einem VBScript, dass ich direkt auf eine Taste legen kann oder wie ist das? Ich habe leider überhaupt keine Ahnung von solchen Scripten. Schon gar nicht von solchen, die auf irgendwelche Systemparameter zugreifen.

Wäre nett, wenn mir einer von Euch sagen könnte, ob das überhaupt so geht und vielleicht ja sogar wie oder wo ich sowas finde.

Besten Dank und Grüße, Rudi.
 
Dabei seit
Feb. 2012
Beiträge
2
#16
Hat sich erledigt. Ich hab einfach mal AutoHotkey installiert und gesehen, dass man damit aus den Skripten direkt .exe dateien machen kann. Diese kann ich ja dann mit dem Tastaturtreiber aufrufen. Aufgabenstellung also erfüllt.

Rudi
 

3l3m3nt

Lt. Junior Grade
Dabei seit
Nov. 2008
Beiträge
430
#17
Auch von mir mal ein dickes LOB,
Danke für die Anleitung, funktioniert bestens.

Auch mit Tastenzuweisung auf der Logitech G15.
 

MaverickM

Fleet Admiral
Dabei seit
Juni 2001
Beiträge
17.831
#18

MaverickM

Fleet Admiral
Dabei seit
Juni 2001
Beiträge
17.831
#19
OK, ich habe mich noch etwas damit gespielt.
Mit NirCmd lassen sich auch Ballon Tooltips erzeugen! So kann man in der Taskbar anzeigen lassen, welches Gerät man gerade aktiviert hat. Meine beiden Batch Files sehen so aus:

Code:
@echo off
title Audio
nircmd trayballoon "Audio" "Logitech G930 aktiviert!" "shell32.dll,168" 3000
nircmd.exe setdefaultsounddevice "Logitech G930"
nircmd.exe setdefaultsounddevice "Logitech G930" 2
Code:
@echo off
title Audio
nircmd trayballoon "Audio" "ASUS Xonar Essence STX aktiviert!" "shell32.dll,168" 3000
nircmd setdefaultsounddevice "ASUS Xonar Essence STX"
nircmd setdefaultsounddevice "ASUS Xonar Essence STX" 2
Und mit dem Bat to Exe Converter hier habe ich mir dann ausführbare Programme erstellt. Damit lässt sich der Command Prompt verbergen und auch gleich die NirCmd.exe mit einbauen, so dass man wirklich nur eine einzige .exe Datei hat.
 
Dabei seit
Juli 2008
Beiträge
184
#20
Hi danke erstmal funktioniert super mit nircmd!!!
Wäre es damit möglich auch die Lautstärke über Hotkeys zu steuern?

bin selbst draufgekommen einfach als Parameter: z.B. "changesysvolume 2000"
 
Zuletzt bearbeitet:
Top