Что мне нужно
Я ищу инструмент или сценарий, который позволяет мне получить доступ к уровням громкости Windows из командной строки. В идеале это позволило бы мне получить и установить все тома, включая уровни приложений, но я бы согласился только на получение и только на основной уровень. Я не возражаю , если он использует PowerShell
, WMI
, JavaScript
, .Net
, вуду, или бабочки. Подойдет любое решение, которое просто даст мне число, которое я могу обработать в диапазоне от 0% до 100%.
Другими словами, подсказки - это черный ящик, который мне нужно заполнить:
C:\> getvol master
50
или даже
C:\> wmic <alias> where "device='master' and name='volume'" get name,value
Name Value
Volume 0xDEADBEEF
Я не против, если мне придется потратить некоторое время, чтобы обернуть это или даже написать что-нибудь сам, если инструменты для этого доступны бесплатно. В последнем случае мне понадобится несколько указателей / доказательств концепции ядра, но я могу справиться с этим самостоятельно. Также я бы не хотел устанавливать новые фреймворки для разработки как раз для этой цели (обратите внимание, что ответы на music2myear и iglvzx были даны до того, как я ввел эти требования).
В качестве «платформ» у меня есть в наличии:
- все, что поставляется с Windows 7 Home Premium
- все, что идет с Cygwin
- Perl
- питон
- Рубин
Как правило, решения с открытым исходным кодом очень предпочтительны. Инструменты с закрытым исходным кодом в порядке, если они бесплатны и источнику можно доверять. Коммерческие решения не принимаются.
Что мне не нужно
- Есть несколько похожих вопросов, которые в основном касаются настройки громкости. Больше всего мне нужно получить громкость, а не установить.
- Есть
nircmdc
, который поддерживает настройку громкости, но не получение. - В моем реестре есть ключ [1], значения которого меняются предсказуемо, когда я настраиваю громкость через микшер с графическим интерфейсом, но я предполагаю, что чтение с этого ключа может привести к поломке аппаратных изменений или обновлений системы. Если я не могу полагаться на то, что решение будет достаточно перспективным, я не смогу его использовать.
- Существуют
AutoHotKey
иWSH
решения для настройки громкости в сети, но а) они тоже хороши только для настройки и, что еще хуже, б) они используютSendKeys
или автоматическое движение мыши для управления графическим интерфейсом. Автоматизация графического интерфейса не вариант.
##windows
Канал на Freenode не приносит никакой пользы , как всегда, Google переполняется писак и незрелых обходные, и я не могу сказать WinAPI звонок от Викки заклинанием.
Кто-нибудь знает способ?
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\MixerSettings\eLineOutTopo\PrimaryNode000
Ответы:
Этот вопрос задавали и отвечали на StackOverflow: /programming/4640106/how-to-get-current-volume-of-system-sound-device-in-windows-7
Ответ: /programming//a/4640225/704977
источник
Я знаю, вы сказали, что вам не нужно решение AutoHotkey, но я считаю, что API AutoHotkey имеет то, что вы ищете:
Вам не нужно создавать GUI или использовать горячие клавиши с AutoHotkey. Вы можете написать мощные утилиты командной строки, скомпилировав
.ahk
скрипт. Тем не менее, вы захотите посмотреть на команду FileAppend для работы сstdout
.источник
Основной том хранится в папке реестра:
Например, этот REG-файл устанавливает основной объем на 100%.
Название ключа может отличаться. Вам нужно перезапустить, чтобы изменения вступили в силу.
Вы не можете быть в состоянии изменить или открыть
Properties
или{7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc}
ключ вregedit
. Хотя у вас есть необходимые права доступа, вы можете получить такую ошибку:Это потому, что имя ключа слишком длинное. Вам придется временно переименовать длинное имя ключа в один символ, а затем переименовать его обратно.
источник