Was ich brauche
Ich suche ein Tool oder ein Skript, mit dem ich über die Befehlszeile auf die Windows-Lautstärke zugreifen kann. Im Idealfall würde es mir ermöglichen, alle Volumes einschließlich der Anwendungsebenen abzurufen und festzulegen, aber ich würde mich damit begnügen, nur die Master-Ebene abzurufen. Ich habe nichts dagegen , wenn es verwendet PowerShell
, WMI
, JavaScript
, .Net
, Voodoo, oder Schmetterlinge. Jede Lösung, die mir nur eine Zahl gibt, die ich weiterverarbeiten kann, um einen Bereich von 0% bis 100% anzupassen, ist ausreichend.
Anders ausgedrückt, die Prompt-Teile sind die Black Box, die ich füllen muss:
C:\> getvol master
50
oder auch
C:\> wmic <alias> where "device='master' and name='volume'" get name,value
Name Value
Volume 0xDEADBEEF
Es macht mir nichts aus, wenn ich etwas Zeit damit verbringen muss, es zu verpacken, oder selbst etwas zu schreiben, wenn die Werkzeuge dafür frei verfügbar sind. In letzterem Fall würde ich einige Hinweise / Proof-of-Concept für den Kern benötigen, aber ich kann die Kruft selbst verwalten. Außerdem möchte ich vermeiden, neue Entwicklungsframeworks nur für diesen Zweck zu installieren (beachten Sie, dass die Antworten von music2myear und iglvzx bereits gegeben wurden, bevor ich diese Anforderungen einführte).
Als "Plattformen" habe ich zur Verfügung:
- Alles, was mit Windows 7 Home Premium geliefert wird
- alles, was mit Cygwin kommt
- Perl
- Python
- Rubin
Im Allgemeinen werden Open-Source-Lösungen stark bevorzugt. Closed-Source-Tools sind in Ordnung, solange sie Freeware sind und der Quelle vertraut werden kann. Kommerzielle Lösungen sind no-go.
Was ich nicht brauche
- Es gibt einige ähnliche Fragen , die sich hauptsächlich mit der Einstellung der Lautstärke befassen. Vor allem muss ich bekommen das Volumen, nicht festgelegt.
- Es gibt
nircmdc
, die das Einstellen der Lautstärke unterstützen, aber nicht bekommen. - Es gibt einen Schlüssel [1] in meiner Registrierung, dessen Werte sich vorhersehbar ändern, wenn ich die Lautstärke über den GUI-Mixer anpasse. Ich würde jedoch davon ausgehen, dass das Lesen von diesem Schlüssel bei Hardwareänderungen oder Systemaktualisierungen zu Problemen führen kann. Wenn ich mich nicht darauf verlassen kann, dass die Lösung einigermaßen zukunftssicher ist, kann ich sie nicht verwenden.
- Es gibt
AutoHotKey
undWSH
Lösungen für das Einstellen der Lautstärke im Web, aber a) sie sind auch nur zum Einstellen gut und, schlimmer noch, b) sie verwendenSendKeys
oder automatisieren die Mausbewegung, um die GUI zu steuern. Die Automatisierung der Benutzeroberfläche ist keine Option.
Der ##windows
Kanal auf freenode ist nach wie vor nicht hilfreich, Google ist überfüllt mit Hacks und halbfertigen Workarounds, und ich kann einen WinAPI-Aufruf nicht von einer Wiccan-Beschwörung unterscheiden.
Kennt jemand einen Weg?
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\MixerSettings\eLineOutTopo\PrimaryNode000
Antworten:
Diese Frage wurde auf StackOverflow gestellt und beantwortet: /programming/4640106/how-to-get-current-volume-of-system-sound-device-in-windows-7
Die Antwort lautet : /programming//a/4640225/704977
quelle
Ich weiß, Sie sagten, Sie wollten keine AutoHotkey-Lösung, aber ich glaube, die AutoHotkey- API hat das, wonach Sie suchen:
Sie müssen keine GUIs erstellen oder Hotkeys mit AutoHotkey verwenden. Sie können leistungsstarke Befehlszeilendienstprogramme schreiben, indem Sie ein
.ahk
Skript kompilieren . Abgesehen davon sollten Sie sich den FileAppend- Befehl ansehen, um damit zu arbeitenstdout
.quelle
Das Master-Volume wird im Registrierungsspeicherort gespeichert:
Diese REG-Datei legt beispielsweise die Hauptlautstärke auf 100% fest.
Der Schlüsselname kann abweichen. Sie müssen neu starten, damit die Änderungen wirksam werden.
Sie sind möglicherweise nicht in der Lage das zu bearbeiten oder öffnen
Properties
oder{7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc}
in Schlüsselregedit
. Obwohl Sie über die erforderlichen Zugriffsberechtigungen verfügen, wird möglicherweise die folgende Fehlermeldung angezeigt:Dies liegt daran, dass der Schlüsselname zu lang ist. Sie müssen den langen Tastennamen vorübergehend in ein Zeichen umbenennen und dann wieder umbenennen.
quelle