Automatisches Umschalten der Lautsprecherkonfiguration in XP

  • Hallo Zusammen,

    da ich meinen Wohnzimmer PC etwas automatisieren möchte würde ich gerne wissen ob man folgendes mit AutoIT realisieren kann. Ich habe einen Screenshot angehängt welcher die antsprechende Einstellung in der Systemsteuerung zeigt. Momentan ist hier Desktop-Stereo Lautsprecher aktiv. Ich möchte nun umschalten z.B. auf 5.1 Sourround Lautsprecher. Eventuell ist das auch in der Regestry hinterlegt dort habe ich aber noch nichts passendes gefunden.

    Hat jemand eine Idee und kann mir vielleicht weiterhelfen. Danke und Grüße

    Ben

    Einmal editiert, zuletzt von bentom (14. Mai 2009 um 09:30)

  • kuck mal unter den beiden Zweigen nach

    Code
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Enum\PCI\VEN_8086&DEV_24C5&SUBSYS_834610F7&REV_03\3&61AAA01&0&FD\DirectSound\Speaker Configuration]
    "Speaker Configuration"=dword:00140004
    
    
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Enum\PCI\VEN_8086&DEV_24C5&SUBSYS_834610F7&REV_03\3&61AAA01&0&FD\DirectSound\Speaker Type]
    "Speaker Type"=dword:00000002

    (wahrscheinlich heisst der Teil "VEN_8086&DEV_24C5&SUBSYS_834610F7&REV_03\3&61AAA01&0&FD" etwas anders aber zur Orientierung reicht es) am besten du exportierst dir die beiden Zweige in eine Reg-Datei einmal mit Stereo-Settings und einmal mit 5.1-Setting und ziehst dir da die genauen Zweige und Werte raus um sie dann mit AutoIt zu setzen

  • Spoiler anzeigen
    [autoit]

    #Include <GuiComboBoxEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Run('rundll32.exe shell32.dll,Control_RunDLLAsUser '&@SystemDir& '\mmsys.cpl','',@SW_HIDE)
    WinWait('Eigenschaften von Sounds und Audiogeräte')
    ControlCommand('Eigenschaften von Sounds und Audiogeräte','','SysTabControl321',"TabRight", "")
    ControlCommand('Eigenschaften von Sounds und Audiogeräte','','SysTabControl321',"TabRight", "")
    Sleep(200)
    ControlClick('Eigenschaften von Sounds und Audiogeräte','','Button3')
    WinWait('Erweiterte Audioeigenschaften')

    [/autoit] [autoit][/autoit] [autoit]

    ControlCommand('Erweiterte Audioeigenschaften','','ComboBox1',"SetCurrentSelection", 4)

    [/autoit]
  • Hallo nochmals,

    also vielen dank erstmal. Leider funktionieren die Pfade in der regestry nicht. Es ist zwar so dass sich der Wert ändert wenn man die Lautsprechereinstellung umstellt (z.B. von 1 auf 5) aber umgekehr funktioniert es leider nicht. Heißt wenn ich dann in der Regestry wieder den Wert 5 auf 1 zurückstelle steht nach wie vor dasselbe in der Systemsteuerung. Da muss also noch mer passieren als dieser eine Wert.

    Das Klickscript ist zwar nett :) aber halt sichtbar und das möcht ich nicht.Oder kann man das irgendwie unsichtbar ausführen lassen. Wahrscheinlich eher nicht oder?

    Hat jemand noch eine Idee?

    Danke und Grüße

    Alex

  • Ich hab bei mir den kompletten DirectSound-Pfad gesichert und damit ändert sich die Einstellung in der Systemsteuerung in beide Richtungen

    du hast aber 'Speaker Configuration' UND 'Speaker Type' gesichert oder ?

  • Sorry ich hatte tatsä#chlich nur die ein Einstellung verändert nicht aber die zweite. Damit klappt es tatsächlich in beide Richtungen. Super vielen vielen Dank für deine Mühen. Das hilft mir schonmal sehr weitr.

    Nun noch eine andere Frage dazu. Die Pfade setzen sich ja wahrscheinlich individuell nach Hardware zusammen. Heißt wenn eine neue Soundkarte eingebaut wird dann ändert sich wahrscheinlich auch der Pfad. Nun wollte ich fragen ob man diesen Pfad quasi suchen kann in Auto IT und dann eben je nach Boxenkonfiguration setzen kann.

    Danke nochmals und Grüße

    Alex

  • mhm glaub nicht das es geht gibt ja auch bloß 2 Registry-Funktionen im Autoit also fällt suchen nach directsound schon mal flach. Man könnte höchstens schauen ob es einen Registry-Key gibt in dem die aktuell aktive (Standard-) Soundkarte mit ihrer ID drin steht aber was ich bis jetzt gefunden habe scheint wieder bloß Hersteller-spezifisch zu sein
    bei mir steht beispielsweise unter

    Code
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\STAC97\Enum]


    im Schlüssel 0 der Key zur Karte drin aber das ist bei dir bestimmt wieder anders

  • Hallo nochmals,

    lang ist es her dass ich mich damit beschäftigt habe nun brauche ich es doch nochmal. Hatte damlas aufgegeben aber naja vielleicht klappt es im zweiten Anlauf :)

    Folgendes Problem: Die Einstellungen für die Lautsprecherkonfiguration stehen immer im folgenden Pfad in der Regestry:

    [autoit]

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Enum\PCI\VEN_8086&DEV_24C5&SUBSYS_834610F7&REV_03\3&61AAA01&0&FD\DirectSound\Speaker Configuration]
    "Speaker Configuration"=dword:00140004

    [/autoit][autoit][/autoit][autoit]

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\System\CurrentControlSet\Enum\PCI\VEN_8086&DEV_24C5&SUBSYS_834610F7&REV_03\3&61AAA01&0&FD\DirectSound\Speaker Type]
    "Speaker Type"=dword:00000002

    [/autoit]

    ( Vielen Dank nochmals für diese Info)

    Dabei gibt es einen fixen Teil und einen Teil welcher Hardware/Soundkarten Spzeifisch ist. Sucht man im Ast

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\0001\

    nach dem Wert: Speaker Configuration bzw. Speaker Type

    dann findet man genau jeweils einen Wert. Diesen könnte man dann entsprechend ersetzen. Nur habe ich momentan das Problem dass ich gar keine Funktion kenne welche nach solch einem Muster in der Regestry sucht und manipuliert.

    Kennt jemand hier eine Möglichkeit?

    Danke und Grüße

    Alex