Як я можу отримати доступ до рівнів гучності з командного рядка в Windows 7?


17

Що мені потрібно

Я шукаю інструмент або сценарій, який дозволяє мені отримати доступ до рівнів гучності 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], який має значення, які передбачувано змінюються, коли я регулюю гучність за допомогою мікшера GUI, але я думаю, що читання з цього ключа схильне до поломки апаратних змін або оновлення системи. Якщо я не можу розраховувати на те, що рішення є достатньо надійним для майбутнього, я не можу його використовувати.
  • Існують AutoHotKeyі WSHрішення для встановлення гучності в Інтернеті, але а) вони теж корисні лише для налаштування, і, ще гірше, б) вони використовують SendKeysабо автоматизований рух миші для управління графічним інтерфейсом. Автоматизація GUI - це не варіант.

##windowsКанал на Freenode не приносить ніякої користі , як завжди, Google переповнюється писак і незрілих обхідні, і я не можу сказати WinAPI дзвінок від Віккі заклинанням.

Хтось знає спосіб?


  1. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\MixerSettings\eLineOutTopo\PrimaryNode000


Можливо, відповідні: superuser.com/questions/284527/…
Der Hochstapler

Чи потрібно мені, щоб розгорнути свою відповідь? Я не був впевнений, що вам потрібно більше, оскільки, здається, у вас є досвід програмування. Я можу навести приклад того, як ви можете використовувати AutoHotkey, щоб легко досягти своєї мети.
iglvzx

Я думаю, що це дуже гарна пропозиція, ще раз дякую, але AHK покусав мене один раз, і я з тих пір соромлюсь. Я, мабуть, не використовував би його, навіть якщо це було повноцінне рішення. Ніщо не заважає вам розширити це для майбутніх читачів / більше оновлень. :)
peth

1
(як зауваження, що рег. навіть не існує в моїй коробці, так що ... це може бути нестабільно). Дивіться також мій C ++ відповідь тут: stackoverflow.com/a/21056089/32453
rogerdpack

Відповіді:


5

Це питання було задано і відповіли на StackOverflow: /programming/4640106/how-to-get-current-volume-of-system-sound-device-in-windows-7

Відповідь: /programming//a/4640225/704977

Ви шукаєте API EndpointVolume. Це частина нових аудіо API, які були випущені в Windows Vista, і їх можна використовувати для отримання або встановлення основного рівня гучності.
... На CodeProject доступна повна керована бібліотека обгортки: Контроль гучності Master Core Audio API.


Дякую за вказівник! Чи доведеться мені це кодувати самостійно чи, можливо, ви знаєте невеликий інструмент, який випливав із запитання / відповіді? Я раніше не торкався C #: якщо мені доведеться сам його кодувати, чи є компілятор у вільному доступі?
Пет

У гіршому випадку вам потрібно буде завантажити Visual Studio C # Express, який безкоштовно: microsoft.com/visualstudio/en-us/products/2010-editions/…
music2myear

Цю конкретну відповідь я знайшов лише під час пошуку рішення вашого питання. Я не проводив подальших досліджень, щоб дізнатись, чи є складений двійковий файл, який уже є загальнодоступним.
music2myear

Цей пошук у Google має певну обіцянку: google.com/search?q=get+current+volume+by+command+line+windows
music2myear

2
Цей, схоже, орієнтований на C #. Якщо ви шукаєте для C ++ 'іш опції см stackoverflow.com/a/21056089/32453
rogerdpack

4

Я знаю, ви сказали, що не хочете рішення AutoHotkey, але я вважаю, що API AutoHotkey має те, що ви шукаєте:

Вам не потрібно створювати графічні інтерфейси або використовувати гарячі клавіші з AutoHotkey. Ви можете написати потужні утиліти командного рядка, склавши .ahkсценарій. Зважаючи на це, ви захочете переглянути команду FileAppend для роботи stdout.


ось що це робить: gist.github.com/rdp/8363141 (хоча пряма консольна програма для цього може бути простішою / легшою, дивіться інші коментарі тут)
rogerdpack

0

Основний том зберігається в місці реєстру:

...\#eSpeakerTopo\Properties\{7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc}

Наприклад, цей файл REG встановлює основний об'єм на 100%.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\DeviceClasses\{6994ad04-93ef-11d0-a3cc-00a0c9223196}\##?#HDAUDIO#FUNC_01&VEN_8384&DEV_7680&SUBSYS_83847680&REV_1034#4&31e60982&0&0001#{6994ad04-93ef-11d0-a3cc-00a0c9223196}\#eSpeakerTopo\Properties\{7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc}\20000]
@=hex(ffff1003):00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,\
  00,00,00

Назва ключа може відрізнятися. Щоб зміни набрали чинності, потрібно перезапустити.

Можливо, ви не зможете відредагувати або відкрити Propertiesабо ввести {7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc}ключ regedit. Хоча у вас є необхідні дозволи доступу, ви можете отримати помилку на зразок цієї:

[Window Title]
Error Opening Key

[Content]
{7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc} cannot be opened.
An error is preventing this key from being opened.

[OK]

Це тому, що ім'я ключа занадто довге. Вам доведеться тимчасово перейменувати довге ім’я ключа на один символ, а потім перейменувати його назад.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.