ich möchte ein tool schreiben, das mir
1. die sounddevices aus der registry liest
2. deren status ausliest (standard oder nicht)
ich weiss wo die registyschlüssel sind:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render
dort verstecken sie sich in den langen zahlen Kolonen
ich habe auch herausgefunden das :
"DeviceState" 1 besagt das dieses gerät sichtbar und nicht deaktiviert ist.
Role:0 Role:1 Role:2 den die art der verwendung angibt .
im darunterliegenden schlüssel ist der wert von "{a45c254e-df1c-4efd-8020-67d146a850e0},2" der name des gerätes.
nun will ich meinen soundchanger dahingehend umbaue, das er
1. die sounddevices aus der registry liest
2. deren status ausliest (standard oder nicht)
3. die devices im tray anzeigen
4. im tray den eintrag disabled der eh schon an ist
5. den regeintrag schreibt wie er sein soll.
problem dabei ist, das die zahlenkolonen bei allen unterschiedlich sind und ich nun einen weg brauche dennoch die richtigen geräte zu finden.
das auslesen der einzelnen werte nach den zahlenkolonen ist simpel
im tray den disablen ist dann auch simpel
den regeintrag schreiben dann auch.
bleibt also nur die frage wie ich den ganzen bereich auslese
das aussieben anhand von "DeviceState" ist dann schon wieder einfach.
hier mein bisheriges script (dem einen oder anderen mag es in teilen bekannt vorkommen)
Spoiler anzeigen
#Include <Constants.au3>
Opt("TrayMenuMode",3)
$hdmi = TrayCreateItem("HDMI")
$real = TrayCreateItem("Soundkarte")
$head = TrayCreateItem("Headset")
TrayCreateItem("")
$exititem = TrayCreateItem("Beenden")
TraySetState()
TraySetClick(1)
While 1
$msg = TrayGetMsg()
Select
Case $msg = $hdmi
Run("control mmsys.cpl,@0,0")
;~ ;warten bis das Fenster geöffnet wurde
WinWaitActive("Sound")
$a="HDMI ist nun an"
Send("{DOWN 1}")
; Zur Schaltfläche "Als Standard"
Send("{TAB 2}")
Send("{ENTER}")
Send("{ENTER}")
TrayTip("Sounddevice", ""&$a, 5, 1)
TrayItemSetState ($hdmi,$TRAY_DISABLE)
TrayItemSetState ($real,$TRAY_ENABLE)
TrayItemSetState ($head,$TRAY_ENABLE)
Sleep(3000)
Case $msg = $real
Run("control mmsys.cpl,@0,0")
;~ ;warten bis das Fenster geöffnet wurde
WinWaitActive("Sound")
$a="Soundkarte ist nun an"
Send("{DOWN 2}")
; Zur Schaltfläche "Als Standard"
Send("{TAB 2}")
Send("{ENTER}")
Send("{ENTER}")
TrayTip("Sounddevice", ""&$a, 5, 1)
TrayItemSetState ($hdmi,$TRAY_ENABLE)
TrayItemSetState ($real,$TRAY_DISABLE)
TrayItemSetState ($head,$TRAY_ENABLE)
Sleep(3000)
Case $msg = $head
Run("control mmsys.cpl,@0,0")
;~ ;warten bis das Fenster geöffnet wurde
WinWaitActive("Sound")
$a="Headset ist nun an"
Send("{DOWN 3}")
; Zur Schaltfläche "Als Standard"
Send("{TAB 2}")
Send("{ENTER}")
Send("{ENTER}")
TrayTip("Sounddevice", ""&$a, 5, 1)
TrayItemSetState ($hdmi,$TRAY_ENABLE)
TrayItemSetState ($real,$TRAY_ENABLE)
TrayItemSetState ($head,$TRAY_DISABLE)
Sleep(3000)
Case $msg = $exititem
ExitLoop
EndSelect
WEnd
ideen bitte zu mir