Czego potrzebuję
Szukam narzędzia lub skryptu, który pozwoli mi uzyskać dostęp do poziomów głośności systemu Windows z wiersza polecenia. Idealnie pozwoliłoby mi to uzyskać i ustawić wszystkie woluminy, w tym poziomy aplikacji, ale zadowoliłbym się tylko uzyskaniem i tylko poziomem głównym. Nie mam nic przeciwko, jeśli używa PowerShell
, WMI
, JavaScript
, .Net
, Voodoo, czy motyle. Każde rozwiązanie, które da mi tylko numer, który mogę dalej przetwarzać w celu dopasowania zakresu od 0% do 100%, wystarczy.
Innymi słowy, podpowiedzi to czarna skrzynka, którą muszę wypełnić:
C:\> getvol master
50
lub nawet
C:\> wmic <alias> where "device='master' and name='volume'" get name,value
Name Value
Volume 0xDEADBEEF
Nie przeszkadza mi to, że muszę poświęcić trochę czasu, aby to owinąć, a nawet sam napisać coś, jeśli narzędzia do tego są dostępne bezpłatnie. W tym drugim przypadku potrzebowałbym kilku wskaźników / proof-of-concept dla rdzenia, ale mogę samodzielnie zarządzać cruft. Chciałbym również unikać instalowania nowych ram programistycznych tylko w tym celu (zwróć uwagę, że odpowiedzi zarówno music2myear, jak i iglvzx zostały podane przed wprowadzeniem tych wymagań).
Jako „platformy” mam dostępne:
- wszystko, co pochodzi z Windows 7 Home Premium
- wszystko, co pochodzi z Cygwin
- Perl
- Pyton
- Rubin
Zasadniczo preferowane są rozwiązania typu open source. Narzędzia z zamkniętym źródłem są w porządku, pod warunkiem, że są bezpłatne i źródłu można zaufać. Rozwiązań komercyjnych nie da się.
Czego nie potrzebuję
- Istnieje kilka podobnych pytań, które w większości dotyczą ustawiania głośności. Przede wszystkim muszę uzyskać głośność, a nie ustawić.
- Istnieje
nircmdc
, który obsługuje ustawianie głośności, ale nie jest uzyskiwanie. - W moim rejestrze jest klucz [1], który ma wartości, które zmieniają się przewidywalnie, kiedy dostosowuję głośność za pomocą miksera GUI, ale zgaduję, że czytanie tego klucza jest podatne na uszkodzenie przy zmianach sprzętowych lub aktualizacjach systemu. O ile nie mogę polegać na tym, że rozwiązanie jest wystarczająco przyszłościowe, nie mogę go użyć.
- Istnieją
AutoHotKey
iWSH
rozwiązania do ustawiania głośności w Internecie, ale a) one także są dobre tylko do ustawienia, a co gorsza, b) używająSendKeys
lub zautomatyzowanego ruchu myszy do sterowania GUI. Automatyzacja GUI nie jest opcją.
##windows
Kanał na freenode jest nieprzydatny, jak zawsze, Google przepełnia hacki i połowiczne obejścia, a ja nie mogę powiedzieć wywołanie WinAPI z Wiccaninem inkantacji.
Czy ktoś zna sposób?
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\MixerSettings\eLineOutTopo\PrimaryNode000
Odpowiedzi:
To pytanie zostało zadane i udzielono odpowiedzi na StackOverflow: /programming/4640106/how-to-get-current-volume-of-system-sound-device-in-windows-7
Odpowiedź: /programming//a/4640225/704977
źródło
Wiem, że powiedziałeś, że nie chcesz rozwiązania AutoHotkey, ale wierzę, że API AutoHotkey ma to, czego szukasz:
Nie musisz tworzyć GUI ani używać skrótów klawiszowych z AutoHotkey. Możesz pisać potężne narzędzia wiersza poleceń, kompilując
.ahk
skrypt. To powiedziawszy, będziesz chciał spojrzeć na komendę FileAppend do pracystdout
.źródło
Wolumin główny jest przechowywany w lokalizacji rejestru:
Na przykład ten plik REG ustawia głośność główną na 100%.
Nazwa klucza może się różnić. Musisz ponownie uruchomić, aby zmiany odniosły skutek.
Edycja lub otwieranie klawisza
Properties
lub może być niemożliwe . Chociaż masz niezbędne uprawnienia dostępu, może pojawić się taki błąd:{7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc}
regedit
Jest tak, ponieważ nazwa klucza jest za długa. Będziesz musiał tymczasowo zmienić nazwę długiego klucza na jeden znak, a następnie zmienić jego nazwę z powrotem.
źródło