Audio Gerät via Hotkey wechseln - Windows 7

NMB

Lt. Junior Grade
Registriert
Aug. 2008
Beiträge
433
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
 
Cool funktioniert wunderbar ;) BIG THX
endlich hat das manuelle umschalten zwischen Klinke (Headset) und Optischen Ausgang (zu meinem AV-Receiver) ein Ende
 
Zuletzt bearbeitet:
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 :).
 
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.
 
@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 :)
 
Kommt drauf an, ob du im Programm die Soundkarte direkt ausgewählt hast, oder es auf primäres Gerät gestellt hast.
 
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
 
Mein Held! Danke für die Anleitung.
Works like a charm!
 
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
}
 
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

  • NirCmd x64.rar
    120,9 KB · Aufrufe: 1.456
  • screenshot.png
    screenshot.png
    58,1 KB · Aufrufe: 2.962
Zuletzt bearbeitet:
Super danke hat geklappt, hättest du evt noch den script damit das Standartkommuniktionsgerät auch auf Standard geschaltet wird?
 
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.
 
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
 
Auch von mir mal ein dickes LOB,
Danke für die Anleitung, funktioniert bestens.

Auch mit Tastenzuweisung auf der Logitech G15.
 
X__ schrieb:
Ich habe das Programm NirCmd benutzt (das nebenbei bemerkt noch allerhand andere Sachen kann ;) )

Nett. Sehr nettes Programm. Hab mir Batch Files gebastelt und schalte damit jetzt endlich bequemer per einem einzigen Klick die Soundgeräte um.
Danke Dir :D
 
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.
 
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:
Zurück
Oben