Xonar Output Switcher

HLK

Enthusiast
Thread Starter
Mitglied seit
06.04.2010
Beiträge
461
Ort
München
Sers,

wie schon im Xonar Sammelthread erwähnt teile ich hier mal mein Xonar Output Switcher Script mit euch.
Das Script basiert auf AutoIt 3.3.8.1 und wurde für das Xonar DX Audio Center Version 0.3.0.36 geschrieben, läuft aber seit Version 0.2.3 auch mit allen anderen Versionen läuft die genauso aufgebaut sind (DG, D1, D2, SLX).

Das Script gibt es in 2 Versionen, eine "lite" Version die nur zwischen FP Kopfhörer und 2 Lautsprechern switched, was auch in Fullscreen Anwendungen (Spielen) funktioniert ohne diese zu minimieren und in der "full" Version, welche neben dem Wechsel des Ausgangs auch die DSP Modi ändert: Game und GX werden bei Aktivierung des Headsets aktiviert, bei aktivierung der Lautsprecher wird der Hi-Fi Modus aktiviert und GX deaktiviert. (Hier ist das Script noch dumm und toggled nur stupide, also muss man beim ersten mal mit dem Script die Lautsprecher aktivieren und dann manuell HiFi aktivieren und alles andere deaktivieren damit das richtig funktioniert.)
Als Statusanzeige erstellt das Script eine Verknüpfung in der Quick Launch Toolbar/ Schnellstartleiste.
Wenn ihr die Verknüpfung wo anders wollt schaut euch mal den Sourcecode an (da gibts 2x diesen Part den ihr dann ändern müsst: @UserProfileDir&"\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Switch.lnk")

Quick Launch unter Windows 7 aktivieren:
Google fragen, dann findet man unter anderem: Windows 7 – Schnellstartleiste aktivieren - Homeboy05's Blog
"1) Klickt auf einen freien Bereich in der Taskleiste und wählt dort aus dem Kontextmenü die Punkte “Symbolleisten/Neue Symbolleisten”.
2) Wählt nun den Ordner “%USERPROFILE%\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch” an und wählt diesen aus.
Nun ist noch das Problem das dort der Text “Quick-Launch” als Ordnerbezeichnung steht und alle Symbole ihren Namen als Text dahinter stehen haben. Nun müsst ihr ganz einfach die Fixierung der Taskleiste aufheben, mit der rechten Maustaste auf eine freie Stelle der Schnellstartleiste klicken und die Punkte “Text anzeigen” und “Titel anzeigen” deaktivieren."

Download 2 Lautsprecher FP Kopfhörer (Alternativ Mirror)Version 0.2.4 (Für Schäden oder Datenverlust wird keine Haftung übernommen.)

Für alle die ohnehin etwas dran ändern wollen gibts den Code auch ohne Download:
Quellcode 0.2.4
Code:
#cs ----------------------------------------------------------------------------
 AutoIt Version: 3.3.8.1
 Xonar DX Audio Center Version: 0.3.0.36

 Author:        Lukas Hansen
 Contact:        hlk65hlk@yahoo.de
#ce ----------------------------------------------------------------------------


;############ Funktionen
Func _LS() ; HS (FP KH) zu 2 LS
    ControlSend("Xonar", "", 2401,"2") ;aktiviert 2 Lautsprecher
    ControlSend("Xonar", "",1065,"{Space}") ;Toggle HiFi (on)
    ControlSend("Xonar", "",1066,"{Space}") ;Toggle GX (off)
    FileWrite("active.txt","LS")
    FileCreateShortcut(@ScriptFullPath,@UserProfileDir&"\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Switch.lnk",@ScriptDir,"","","C:\Windows\system32\mmres.dll","",1) ;Legt ein Shortcut in der QuickLaunchBar an
EndFunc

Func _HS() ; 2 LS zu HS (FP KH)
    ControlSend("Xonar", "", 2401,"F") ;aktiviert FP Kopfhörer
    ControlSend("Xonar", "",1064,"{Space}") ;Toggle GameMode (on)
    ControlSend("Xonar", "",1066,"{Space}") ;Toggle GX (on)
    FileWrite("active.txt","HS")
    FileCreateShortcut(@ScriptFullPath,@UserProfileDir&"\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\Switch.lnk",@ScriptDir,"","","C:\Windows\system32\mmres.dll","",6) ;Legt ein Shortcut in der QuickLaunchBar an
EndFunc
;############

If Not ProcessExists("AsusAudioCenter.exe") Then
Run("C:\Program Files\ASUS Xonar DX Audio\Customapp\AsusAudioCenter.exe")
ProcessWait("AsusAudioCenter.exe")
While ControlSend("Xonar", "", 2401,"S") = 0 ;Sendet Eingaben bis es funktioniert = Audio Center läuft
    ToolTip("Please wait for AudioCenter to start")
    Sleep(50)
WEnd
EndIf

FileOpen("active.txt",0) ;read mode
$active = FileRead("active.txt")
FileClose("active.txt")
FileOpen("active.txt",2) ;overwrite mode
If $active = "LS" Then     _HS()
If $active = "HS" Then    _LS()
FileClose("active.txt")
Die active.txt müsst ihr im selben Ordner wie das Script erstellen, die Icons sind Windowsicons, die sollte eigentlich jeder haben. Die Lite Version hat jeweils die zweite und dritte ControlSend Zeile nicht.

Bei Fragen zum Script im allgemeinen oder wie ihr euch das ganze anpasst (bitte vorher mal google bemühen, AutoIt ist wirklich gut und leicht verständlich dokumentiert) hier im Thread fragen. PMs werden ignoriert/gelöscht.
Ansonsten bitte bei weiterverbreitung meinen Namen im Script lassen und Geld braucht damit auch keiner verdienen
wink.gif
 
Zuletzt bearbeitet:
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Leider funktioniert dein Tool bei meiner Xonar Phoebus unter Win7 64bit nicht. Wenn ich z.b. Switch_lite.exe starte, kommt das Icon von der .exe in meinen Tray und wechselt sich mit einem roten X ab. Wenn ich einen Rechtsklick auf das Icon mache stehen da "Script stopped" und "Exit". Entpacken, ausführen, dann sollte es doch eigentlich funktionieren, oder?
 
Bei der Phoebus ist der Treiber anders aufgebaut als bei den anderen Asus Soundkarten. Ich werd ihn mir mal laden und schauen ob ich ihn auch ohne Karte laufen lassen kann, dann sollte ich das Script schnell anpassen können. Ansonsten bräuchte ich ein paar Infos aus Autoit Window Info und ohnehin jemanden der es testet - könnte ich mich diesbezüglich bei dir melden?

Edit: Kann den Treiber ohne Karte nicht installieren. Was ich bräuchte wäre die Control ID der Checkboxen von Speakers und Headphones.
 
Zuletzt bearbeitet:
Wenn du mir sagst wie ich die rausfinde, suche ich sie gerne für dich.
 
Du brauchst AutoIt bzw. AU3Info, habs mal in meine Dropbox gelegt: :)
Tool starten, Reiter von Window auf Control setzen
Xonar Treiberfenster öffnen
'Fadenkreuz' (Finder Tool) auf die checkbox ziehen. ID notieren.
'Fadenkreuz' (Finder Tool) auf die andere checkbox ziehen. ID notieren.

Und vorher vllt mal probieren ob du die Checkboxen mit der leertaste aktivieren/deaktivieren kannst.
 
Zuletzt bearbeitet:
Tut mir leid, ich bekomme es nicht hin :( .
Wenn ich versuche die ID der auf dem Bild per Pfeil markierten Checkboxen auszulesen zeigt das Tool leider nichts an.

phoebus.jpg
 
Das is schlecht. Kriegst du von anderen Objekten ne ID? Wäre mir nicht sicher ob Au3Info nicht ne Autoit installation braucht.
Kannst du die LS/KH aktivieren durch ein klick auf den Text oder die Symbole? Bekommst du dafür ne ID?
Den Name des Fensters wie er unten in der Taskleiste steht bräuchte ich auch, sofern du ne ID bekommst :/
 
Zuletzt bearbeitet:
Der Titel des Fensters ist ASUS Phoebus.
Aktivieren kann ich Boxen/Kopfhörer durch einen Klick auf das Symbol, aber ich bekomme weiter keine ID mit dem Tool. Bei anderen Fenstern bekomme ich teilweise IDs, z.B. die Webseite im Browser, die Adressleiste des Browsers, die Taskleiste, Tray oder Show Desktop-Fläche. Bei anderen Elementen, z.b. Bookmarkbar meines Browsers, dagegen liefern keine ID mit dem Tool.
 
Ok, dann funktioniert das Tool aber, kann nur nix mit dem Phoebus Treiberfenster anfangen. Evtl könnte man die Änderung auch über den Registryeintrag vornehmen. Schau mal ob du das hier findest: HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\
dort schaust du die Ordner 0001 bis 0011 durch nach \Settings und dem Eintrag SpeakerConfig
dieser sollte sich in einem der Ordner wenn du umschaltest ändern.
Wenn du den Eintrag findest und mir sagst 1) in welchem Ordner er liegt und 2) welche Werte sich ändern könnte man vermutlich auch recht einfach ein Skript dafür schreiben.

Und bitte in der Registry nicht rumpfuschen, da kannste dein System schnell lahmlegen.
 
Zuletzt bearbeitet:
In dem von dir angegebenen Verzeichnis existiert bei mir kein Eintrag SpeakerConfig
 
Dann durchsuch die Registry bitte mal nach dem Value "SpeakerConfig". Will irgendwie nicht glauben das Asus für die Phoebus mehr als nen anderes Frontend geschrieben hat.

Edit
Schau dir das mal an: http://code.google.com/p/xonarswitcher/
Beim googlen gefunden, kA... vllt funktioniert das, sieht jedenfalls so aus als würde es über die registry gehn.
 
Zuletzt bearbeitet:
AutoIt ist mal wirklich genial! :d

Hab mir nun ein Skript geschrieben, welches in den Windows Soundeinstellungen zwischen "Lautsprecher" und "SPDIF" (Also Kopfhörer und Lautsprecher) wechselt und passend dazu im Asus Control Center SPDIF aktiviert/deaktiviert.


Eine Sache die mir bei deinem Skript aufgefallen ist:
Du benutzt als Title "Xonar DX Audio Center". Der muss glaub ich nicht so genau sein. Wenn du nur "Xonar" nimmst sollte das Skript zumindest schonmal mit einer Xonar Essence STX laufen. Der 2401er Button ist bei beiden schonmal identisch.
 
Da ist was dran, danke. - Wird in der nächsten Version angepasst.

Wenn's jemand fertig als exe braucht (also Version 0.2.3) gebt mir bescheid, dann compile ich es und lads hoch.
 
Zuletzt bearbeitet:
Kann deine .zip nicht laden
Download permission denied by uploader. (0b67c2f5)

Kannst es bitte fixen? Und eine .exe wäre nicht schlecht falls deine .zip nicht funktioniert.
 
Download 0.2.4
Edit: Script funktioniert so leider nicht, kümmere mich morgen Abend/Nacht drum. Wer nicht warten kann kann ja selber drei Zeichen schreiben. In den ControlSend Zeilen das 'Xonar' ersetzen durch den vollständigen Namen eures Audiocenters wie er unten in der Taskleiste oder auch im Fenster selbst steht.

Jemand nen Tipp wie ich das Elegant löse? Nur Xonar geht nicht, mir fällt grad nur ne Config ein oder dass das Script selbst probiert bis es funktioniert... gibts irgendwie ne Variable oder so? Sowas wie "Xonar * Audio Center" ?
 
Zuletzt bearbeitet:
Habs nicht ausprobiert... Aber das könnte das Problem lösen:

AutoItSetOption("WinTitleMatchMode", 2)

Einfach an den Anfang des Skripts schreiben. *klick* -> Muss nur noch irgend ein Wort vom Title vorkommen.

Man kann anscheinend auch mit WinGetHandle den "Handle" des Programms rausfinden, in einer Variablen speichern und die dann anstelle des Titels benutzen. Aber weiß gerade nicht wie ich den Handle von einem Fenster dessen Titel ich nicht kenne bekomm. ^^ Ist glaube ich eher dafür um mehrere Fenster mit gleichem Titel zu unterscheiden, bzw für Fenster die den Titel ändern.
 
Zuletzt bearbeitet:
Thx. AutoIt hat natürlich gemacht was es sollte, kann aber ein "Xonar" natürlich nicht eindeutig zuordnen wenn gerade auch Firefox damit beginnt... man könnte es also trotzdem einfach so (Version 0.2.4) Verwenden und solang kein anderes Fenster mir Xonar beginnt funktioniert es. Etwas eindeutiger gehts noch mit "Xonar D"
Ich werd es wohl trotzdem ordentlich machen und nach einer Variable für das "D#" suchen oder mit Controlsend probieren welches geht und das in ne Configdatei schreiben.
 
Zuletzt bearbeitet:
Naja, dass gerade in dem Bruchteil einer Sekunde ein weiteres Fenster mit dem Titel Xonar geöffnet wird ist schon sehr unwahrscheinlich. ^^

Ich hab mein Projekt mittlerweile auch soweit fertig:



Audio: Wechsel zwischen SPDIF (Verstärker) und Analog (Kopfhörer) in Windows & den Asus Soundeinstellungen.
Game: Wechsel auf 6 Channel + Dolby Headphone
Mikro: Stereomix <-> Mikrofon
Beamer & 2. Monitor aktivieren / deaktiveren.

Nur die Lösung für den Gamemode ist etwas "gepfuscht". Ich hab keine Ahnung wie ich den "DolbyHeadphone" Button in der Asus Software ansteuern soll. Der hat weder eine ID noch wird er als Text erkannt.

Man kann aber noch viel verbessern. Vll schau ich mir als nächstes mal an, wie man eine .ini datei schreibt.
 
Zuletzt bearbeitet:
Also bei meiner Xonar D1 (Win7 64bit) läuft es einwandfrei. Wäre noch klasse, wenn du mit den Befehl für Kopfhörer und FP 2LS anstatt FP ("F") Kopfhörer und 2LS ("2") geben könntest. Würde es gerne noch editieren. Hab meine Kopfhörer nämlich hinten und die Laufsprechen am Frontpanel angeschlossen.
 
ControlSend("Xonar D", "", 2401,"K") ;aktiviert Kopfhörer
ControlSend("Xonar D", "", 2401,"{F 2}") ;aktiviert FP 2 LS

sollte so klappen, ansonsten für die FP LS 2x die ControlSend F Zeile - und wenn das auch nicht geht n sleep dazwischen.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh