Sound-Gerät ändern

  • Hallo,
    da ich ein Logitech G35 besitze, möchte ich natürich dementsprechend auch manchmal darauf hören.
    Aber bei meinem Windows 7 muss ich dafür immer das Standard-Audiogeärt wechseln.
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Kann ich diesen Schritt nicht automatisieren?

  • Danke !
    Leider hat dies mir nicht viel gebracht, da es den genannten Reg-Key bei mir auch nicht gibt.

    Ich google mich seit heute morgen schon zu Tode ! :D

  • Unmöglich. Ich änder den Wert und in der Zeit hab ich ca. 100.000 Registry aktivitäten aufgezeichnet.
    Jetzt nach 20 Sekunden bin ich bereits bei 1,2 Millionen.
    :D

  • Du kannst die Ausgabe vom Process Monitor auch filtern,
    damit nur relevante Informationen angezeigt werden.

    Der process ist "rundll32.exe" und greift u.a. zu auf:
    HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\

    Wer andern eine Bratwurst brät
    der hat ein Bratwurstbratgerät.

    Einmal editiert, zuletzt von ohforf (27. März 2011 um 17:20)

  • Unmöglich. Ich änder den Wert und in der Zeit hab ich ca. 100.000 Registry aktivitäten aufgezeichnet.
    Jetzt nach 20 Sekunden bin ich bereits bei 1,2 Millionen.
    :D

    Nimm "RegShot" !

    Der zeigt Dir nur die Differenzen zweier Registry-Snapshot's. Das reduziert deutlich den Aufwand.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • So wie ich das verstanden habe, müsste ich doch so mit der Funktion arbeiten können:

    [autoit]

    #include <Bass.au3>
    _BASS_StartUp()
    _BASS_SetDevice(1);Das erste in meiner "Geräte" Liste

    [/autoit]

    Jedoch tut sich nichts.

  • Hallo PokerFace,
    ganz so einfach geht es dann doch nicht.
    Wenn Du den Code so verwenden möchtest, müsstest du mit

    [autoit]

    _BASS_Init()

    [/autoit]

    oder einer vergleichbaren Funktion arbeiten.
    Außerdem solltest Du beachten, dass das Ausgabegerät nur im Rahmen der Verwendung mit dem jeweiligen Programm und der Bass_UDF geändert wird. Dazu steht in der Hilfe der jeweiligen Funktionen der Bass_UDF mehr.

  • Okay.
    Also ich möchte die Änderung des Standartausgabegerätes ja nicht nur für ein Programm sonder den ganzen PC haben, da ich ein Headset besitze und die ganze Umschalterei echt nervt.

  • Hallo zusammen!

    Ich musste mal etwas für einen Arbeitskollegen machen.
    Zuerst für XP (Dort konnte man es noch über die Registry erledigen)
    Danach für Vista / Win7.
    Dort habe ich nur die Möglichkeit gefunden, es fernzusteuern.

    Hier der Code:
    Das INI-File wird automatisch erzeugt, wenn nicht vorhanden. Darin muss man
    - bei XP die Namen der zu tauschenden Audio Devices Angeben
    - die Nummern der Positionen bei Win7 angeben.

    Spoiler anzeigen
    [autoit]

    ;===============================================================================================================================
    ;Description......: Switch from one Audio Output to an other
    ;Author...........: Veronesi
    ;Date.............: 21.10.2010
    ;===============================================================================================================================
    #NoTrayIcon
    #AutoIt3Wrapper_UseX64=n
    #AutoIt3Wrapper_UseUpx=y
    #AutoIt3Wrapper_Res_Comment=Switch from one Audio Output to an other
    #AutoIt3Wrapper_Res_Description=Switch from one Audio Output to an other
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.6
    #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
    #AutoIt3Wrapper_Res_LegalCopyright=Veronesi

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

    Opt("MustDeclareVars", 1) ;Must declare variables
    Opt("WinWaitDelay", 100)
    Opt("SendKeyDelay", 20)
    Opt("SendKeyDownDelay", 20)

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

    Global Const $RegKey = "HKEY_CURRENT_USER\Software\Microsoft\Multimedia\Sound Mapper"
    Global $ActualSettings, $OutputDevice1, $OutputDevice2, $Status

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

    If @OSVersion = "WIN_2000" Then Exit

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

    If @OSVersion = "WIN_XP" Then ;Win XP
    If Not FileExists(@ScriptDir & "\Swap_AudioOutput_Settings.ini") Then
    IniWrite(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice1","Realtek HD Audio output")
    IniWrite(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice2","Realtek HD Audio output")
    EndIf

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

    $OutputDevice1 = IniRead(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice1","Realtek HD Audio output")
    $OutputDevice2 = IniRead(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice2","Realtek HD Audio output")

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

    $ActualSettings = RegRead($RegKey, "Playback")

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

    If $ActualSettings = $OutputDevice1 Then
    RegWrite($RegKey, "Playback", "REG_SZ", $OutputDevice2)
    Else
    RegWrite($RegKey, "Playback", "REG_SZ", $OutputDevice1)
    EndIf
    Else ;Vista, Win7
    If Not FileExists(@ScriptDir & "\Swap_AudioOutput_Settings.ini") Then
    IniWrite(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice1","1") ;1 = First entry / 2 = second entry / 3 = third entry....
    IniWrite(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice2","2")
    EndIf
    $OutputDevice1 = IniRead(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice1","1")
    $OutputDevice2 = IniRead(@ScriptDir & "\Swap_AudioOutput_Settings.ini","Audio Output","OutputDevice2","2")

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

    ShellExecute("mmsys.cpl") ;Start Sound switcher control
    WinWait("Sound", "", 10000) ;Wait max. 10s for this window
    WinActivate("Sound") ;Activate window
    Send("{Down " & $OutputDevice1 & "}") ;Activate entry
    $Status = ControlCommand("Sound", "", "[CLASS:Button; INSTANCE:2]", "IsEnabled", "") ;Check status of the button "Als Standard". If = 1 then the button is NOT deactivated!
    If Not $Status Then Send("{Down " & $OutputDevice2 - $OutputDevice1 & "}") ;If the first entry is set as default, then take the second
    ControlClick("Sound", "", "[CLASS:Button; INSTANCE:2]")
    ControlClick("Sound", "", "[CLASS:Button; INSTANCE:4]")
    EndIf
    Exit

    [/autoit]

    Gruss Veronesi