Audio Gerät via Hotkey wechseln - Windows 7

Hi,

erstmal vielen dank für diese genialen Skripts.

Da meine Programmier Kenntnisse hier schon mehr als ausgereizt sind, wollte ich fragen ob mir jemand bei dem Skript von 'Dazob' noch die Deaktivierung von dem nicht aktiven Device einbauen kann, da sich Windows sonst manchmal dumm stellt und den Ton nicht auf das neue Gerät mit nimmt.

Viele Grüße
Wolf2k
 
Ich habe das Script mal angepasst obwohl das meine erste erfahrung mit dieser Script Sprache ist ;) Ich mach sonst nur html/php xD aber hier mein ergebnis, es funktioniert auch aber das "Sound" fenster darf nicht geöffnet sein, sonst verhauts den desktop mit der symbol anordnung. funzt nur mit Win7 & Vista.

Ich habe hinter jedem Befehl geschrieben was gemacht wird sollte selbst erklärend sein wenn man sich bissl reindenkt, ich hab nur keine bessere lösung zum deaktivieren der geräte als das kontextmenü gefunden, vllt hat da jemand ne schönere möglichkeit, aber es ist schonmal ein anfang:

PS: die ganzen DOWNs müssen angepasst werden wo eine zahl dabei steht

Code:
    ; <Windows>+<BildAuf> wählt Gerät 2
    #PgUp up:: SelectAndShowAudioDevice(2,"Lautsprecher")
     
    ; <Windows>+<BildAb> wählt Gerät 1
    #PgDn up:: SelectAndShowAudioDevice2(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 an 3ter stelle navigieren
    Send, {AppsKey} ; Kontexmenü wird geöffnet
    Send, {DOWN 2} ; 2 Felder nach unten  navigieren
    Send, {ENTER} ; Auswahl Bestätigen
    SetControlDelay -1 ; Aktiviere schnellen Mausklick
    ControlClick Button2 ; Mausklick auf 'Als Standard'
    ControlSend SysListView321, {HOME} ; Zum Anfang der Liste mit Pos1
    ControlSend SysListView321, {DOWN 1} ; Zum Audiogerät an 2ter stelle navigieren
    Send, {AppsKey} ; Kontexmenü wird geöffnet
    Send, {DOWN 3} ; 3 Felder nach unten  navigieren
    Send, {ENTER} ; Auswahl Bestätigen
    
    if CloseSoundWindowAtEnd
    WinClose
    }

    SelectAndShowAudioDevice2(deviceNumber, deviceName)
    {
    error := ActivateAudioDevice2(deviceNumber)
    if error
    TrayTip % "Fehler beim Aktivieren von " . deviceName, % error
    else
    TrayTip % deviceName . " aktiv", % "Audiowiedergabe erfolgt über " . deviceName
    }
     
    ActivateAudioDevice2(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 an 2ter stelle navigieren
    Send, {AppsKey} ; Kontexmenü wird geöffnet
    Send, {DOWN 2} ; 2 Felder nach unten  navigieren
    Send, {ENTER} ; Auswahl Bestätigen
    SetControlDelay -1 ; Aktiviere schnellen Mausklick
    ControlClick Button2 ; Mausklick auf 'Als Standard'
    ControlSend SysListView321, {HOME} ; Zum Anfang der Liste mit Pos1
    ControlSend SysListView321, {DOWN 2} ; Zum Audiogerät an 3ter stelle navigieren
    Send, {AppsKey} ; Kontexmenü wird geöffnet
    Send, {DOWN 3} ; 2 Felder nach unten  navigieren
    Send, {ENTER} ; Auswahl Bestätigen
    
    
     
    if CloseSoundWindowAtEnd
    WinClose
    }
 
gibt es die Möglichkeit NirCmd mit den Zusatztasten einer Sidewinder X4 zu betreiben?
 
NMB schrieb:
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:)


Wenn ich meine Asus Xenor DGX installiere kann ich die onboard garnicht mehr auswählen in den Soundeinstellungen. Was mach ich falsch ?

EDIT:

Hat sich erledigt. Musste im Bios bei HD Audio von Auto auf Enabled stellen.
 
Zuletzt bearbeitet:
Hallo,

bin auf diesen Thread über Google gestolpert. Es geht noch einfach:

http://funk.eu/ssd/

Klappt auch von der KOmmandozeile aus
 
Hallo, habe gerade für das NirCMD Skript noch ein Skript für AutoHotKey geschrieben.
X___ hat die HotKeyFunktion schon mit HotKeyMan integriert.

Vorteil von AutoHotKey ist, dass man jegliche Art von Taste mit dem Hex-Code einbinden kann.
Somit lassen sich auch die meisten Gamepads oder HotKey-Tasten von Tastaturen nutzen.

Tasten lassen sich mit Hex-Code über das Kürzel "SC"+ den Hexcode einfügen.
Bei dem Panasonic-Fernseher zum Beispiel "SC07D".

Hier bei der AutoHotKey-Webseite gibt es alle Tastencodes sowie eine Anleitung zum Herausfinden des Hex-Codes. Der Link ist leider nicht erlaubt. (Suche "KeyList AutoHotKey")


Code:
SC07D up:: ; 
 Run, nircmd.exe setdefaultsounddevice "2 - Panasonic-TV"
return

SC079 up:: ; 
 Run, nircmd.exe setdefaultsounddevice "SPDIF-Out"
return

SC07B up:: ; 
 Run, nircmd.exe setdefaultsounddevice "Lautsprecher"
return


EDIT:
Noch eine Frage NirCMD: Wenn z.B. der Panasonic Fernseher nicht eingeschaltet ist, fällt dieser als Wiedergabe gerät weg.
Endet es in einer Dauerschleife wenn ich nun die Taste dazu drücke oder Beendet NirCMD den Befehl automatisch wenn es das Wiedergabegerät nicht gibt?
 
Zuletzt bearbeitet:

Hallo,
Ich verstehe nicht ganz, wie das gemeint ist und zwar punkt 4, dort soll man in den Eigenschaften einen hotkey einbinden.
Kann mir vielleicht jemand das nochmal etwas erklären?


Danke schon mal!!
mista_kanista
 
Zuletzt bearbeitet von einem Moderator:
Ganz einfach, wenn du eine Verküpfung auf dem Desktop ablegst, kannst du rechts klicken und dann hast du im dem Menü unten eigenschalften stehen, die klickst du an, und dann gibt es da eine zeile für Tastenkombination womit ich den Hotkey meinte... da stellst du dann was ein. leider geht hier nur die kombination Strg + Alt, was aber das gleiche ist wie die taste Alt Gr, ich hab daher Alt Gr + L für Lautsprecher bzw. 5.1 und Alt Gr + H für Headset... beides sehr angenehm zu erreichen. Ich benutze im übrigen immer noch das ursprüngliche script, läuft einfach sauber auch unter win8 ...
Grüße
 
Hi Leute,

ist ein Super Thread, und ich brauche mal Hilfe von Euch. Ich hab keine Ahnung von Scripten und möchte dieses Umschaltetool auch nutzen. Ich habe 3 Soundsystem an meinem PC angeschlossen (siehe Bild) und brauche einen komfortablen Umschalter per Hotkey. Am liebsten wie ihr es schon mit Bild auf und Bild ab aber so das es nicht nur zwischen 2 Quellen funktioniert sondern zwischen 3 wie auf meinem Bild. Ich möchte es das es einfach durchschaltet. Kann man das irgendwie bewerkstelligen?

Danke.

 
Zuletzt bearbeitet:
Ich benutze den ''Default Audio Changer''. Sehr einfach und selbsterklärend. Brauchst auch nichts zu scripten.
 
Chaiiin schrieb:
Ich benutze den ''Default Audio Changer''. Sehr einfach und selbsterklärend. Brauchst auch nichts zu scripten.

Hey Vielen Dank. Du hast mir sehr geholfen, ist genau das was ich gesucht habe.
 
GELÖST EDIT :

- es fehlte ein Komma und eine 1 am Ende der Zeile
- Taskleiste musste aktualisiert werden
- FileDelete hinzugefügt um die IconCache.db zu löschen

FileCopy, C:\Icons\HON\Headset.lnk, C:\Users\NAME\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar, 1

+ (Taskleiste aktualisieren)


Process, Close, explorer.exe

FileDelete, c:\Users\Admin\AppData\Local\IconCache.db

Run, explorer.exe

Process, Close, explorer.exe

sieht jetzt so aus:

2014-08-09 23_19_06-.png 2014-08-09 23_20_03-.png


_____________________________________________________________________

Ich habe das jetzt per AHK (wie anfangs erklärt) gelöst.

Da mein Desktop frei von irgendwelchen symbolen ist und auch so bleiben soll, habe ich meine wichtigen shortcuts in der taskleiste.

nun sind dort 2 shortcuts (siehe bild)

taskbar.png

Ich würde gerne folgendes gelöst haben:

Die aktive Soundausgabe soll entsprechend das Icon ändern:

Aktiv.png

sodass dieser dann in der Taskbar zu sehen ist.

Bei entsprechender Wahl, wird der inaktive dann wieder geändert (in diesem Fall ohne Grün)

Ich habe das bereits mit der Zeile im AHK Script probiert aber ohne Erfolg:

FileCopy C:\Icons\HON\HON.lnk, C:\Users\NAME\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar

Vor allem wundert es mich, dass wenn ich den Link manuell in den Taskbar ordner kopiere, dieser gar nicht in der Taskleiste auftaucht!

Das ganze ist nur spielerei.. im grunde weiss ich, welches profil aktuell läuft, aber ich wills trotzdem lösen.. und brauche hilfe dabei!

danke schon mal vorab!
 
Zuletzt bearbeitet:
Hallo an alle,

ich möchte auch noch meien Beitrag zu diesem Thread leisten, zuerst aber meine Vorgeschichte.

Ich habe nach einer Möglichkeit gesucht nicht nur den Ton zwischen Fernseher und PC-Boxen umzuschalten sondern auch die Auflösung, da mein TV ein 19:9 Format und mein Monitor ein 16:10 Format hat.

Mich hats immer genervt das alles einzeln umzustellen wenn ich auf die Couch wollte um einen Film per Glotze anzusehen oder im Internet surfen wollte. Nach verschiedenen Lösungsversuchen bin ich dann auf diesen Thread von "NMB" und die Lösungsvariante von "Dazob" gestoßen. Die gefielen mit bzgl. Ton ganz gut.

In der AutoHotkey Community bin ich dann noch auf eine Lösung, gepostet von "derRaphael", für die Auflösung gestoßen.

Mit meinen wenigen Programmierkenntnissen habe ich einfach beide Lösungen kombiniert, was recht einfach war.

Hier das Ergebnis:
Code:
; <Windows>+<BildAuf> wählt Gerät 0 (das Oberste) in der Liste der Audiogeräte (TV)
; und ändert die Auflösung auf passendes Format des Fernsehers (1280x720x32, 60Hz)
#PgUp up:: SelectAndShowAudioDevice(0,"Fernseher") ChangeDisplaySettings( (bpp:=32), (breite:=1280), (hoehe:=720), (hZ:=60) )


; <Windows>+<BildAb> wählt Gerät 1 (das zweite von oben) in der Liste der Audiogeräte (Lautsprecher)
; und ändert die Auflösung auf passendes Format des Monitors (1440x900x32, 59Hz)
#PgDn up:: SelectAndShowAudioDevice(1,"Lautsprecher") ChangeDisplaySettings( (bpp:=32), (breite:=1440), (hoehe:=900), (hZ:=59) )


;Ab hier erfolgt die kurzzeitige Anzeige des gewählten Geräts in der Taskleiste
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
}


;Ab hier folgt Programmcode für die Umstellzung der Auflösung
; Shimanov & Skan / http://www.autohotkey.com/forum/post-164871.html#164871
; cD -> BitsPerPixel / sW -> Breite / sH -> H?he / rR -> BildschirmFrequenz
ChangeDisplaySettings( cD, sW, sH, rR ) 
    {
    VarSetCapacity(dM,156,0), NumPut(156,2,&dM,36)
    DllCall( "EnumDisplaySettings", UInt,0, UInt,-1, UInt,&dM ), NumPut(0x5c0000,dM,40)
    NumPut(cD,dM,104),  NumPut(sW,dM,108),  NumPut(sH,dM,112),  NumPut(rR,dM,120)
    Return DllCall( "ChangeDisplaySettings", UInt,&dM, UInt,0 )
    }

Jetzt kann ich alles schön bequem mit nur einer Tastenkombination umstellen wenn ich zwischen Glotze und PC wechsle und dem TV-Vergnügen steht nichts mehr im Weg.

Gruß fanti :)
 
auch wenn es länger her ist. aber ich möchte micht auch für die Scripte sehr bedanken. Ich benutze die Teile sehr oft!!

Gruß Lin
 
Mahlzeit,

ich muss den Thread auch mal ausgraben.

Ich habe mir eine Asus Xonar gekauft und möchte nun auch am liebsten per Hotkey zwischen Headset/Boxen switchen.
Mein Frontpanel habe ich auch an die Xonar angeschlossen. Im Moment muss ich also immer im Treiber zwischen front/back umschalten.
Gibt es eine Möglichkeit das auch per Hotkey zu realisieren?

MFG
 
Geht bestimmt, aber so ganz verstanden habe ich Deine Konfig nicht :confused_alt:
Wenn Du das noch mal genauer erklären könntest...
 
Okay ich versuchs mal anders zu beschreiben :)
Ich habe mir eine Asus Xonar gekauft und die in meinen Rechner eingebaut. Dann habe ich das Audiofrontpanel meines Gehäuses an die Asus Xonar angeschlossen, damit dieses auch über die Soundkarte läuft.
Am Audiofrontpanel habe ich dann meine Boxen und hinten an der Soundkarte meine Kopfhörer angeschlossen.
Wenn ich nun zwischen Boxen und Kopfhörern wechseln möchte muss ich in der Taskleiste den Asus Treiber öffnen und dort zwischen Frontpanel und Soundkarte umschalten.
Meine Frage ist jetzt, ob das auch per Hotkey möglich ist?

Mfg
 
Wenn Du mit rechte Maustaste auf das Lautsprechersymbol im Traybereich der Taskleiste klickst
und dann die "Wiedergabegeräte" öffnest, sind dann die beiden Ausgänge zwischen denen Du schalten möchtest
beide aufgeführt ?
 
Zurück
Oben