17 votos

¿Cómo puedo acceder a los niveles de volumen desde la línea de comandos en Windows 7?

Lo que necesito

Estoy buscando una herramienta o un script que me permita acceder a los niveles de volumen de Windows desde la línea de comandos. Lo ideal sería que me permitiera obtener y establecer todos los volúmenes, incluyendo los niveles de aplicación, pero me conformaría con que sólo obtuviera, y sólo el nivel maestro. No me importa si utiliza PowerShell , WMI , JavaScript , .Net el vudú o las mariposas. Cualquier solución que me dé un número que pueda procesar para ajustarse a un rango de 0% a 100% será suficiente.

Dicho de otro modo, las partes de la solicitud son la caja negra que necesito llenar:

C:\> getvol master
50

o incluso

C:\> wmic <alias> where "device='master' and name='volume'" get name,value
Name    Value
Volume  0xDEADBEEF

No me importa si tengo que dedicar algo de tiempo a envolverlo o incluso escribir algo yo mismo si las herramientas para hacerlo están disponibles libremente. En este último caso, necesitaría algunos indicadores/pruebas de concepto para el núcleo, pero puedo gestionar el resto por mi cuenta. También me gustaría evitar la instalación de nuevos marcos de desarrollo sólo para este propósito (tenga en cuenta que tanto de music2myear y iglvzx's las respuestas fueron dadas antes de He introducido estos requisitos).

Como "plataformas", tengo disponibles:

  • todo lo que viene con Windows 7 Home Premium
  • cualquier cosa que venga con Cygwin
  • Perl
  • Python
  • Ruby

Por lo general, se prefieren las soluciones de código abierto. Las herramientas de código cerrado están bien siempre que sean gratuitas y la fuente sea fiable. Las soluciones comerciales no son válidas.

Lo que no necesito

  • Hay algunos similar preguntas que se ocupan principalmente de ajustar el volumen. Sobre todo, necesito Consigue el volumen, no se ajusta.
  • Hay nircmdc , que admite la configuración del volumen, pero no la obtención.
  • Hay una clave[1] en mi registro que tiene valores que cambian de forma predecible cuando ajusto el volumen a través del mezclador de la GUI, pero supongo que la lectura de esa clave es propensa a romperse con los cambios de hardware o las actualizaciones del sistema. A menos que pueda confiar en que la solución es razonablemente a prueba de futuro, no puedo usarla.
  • Hay AutoHotKey y WSH soluciones para ajustar el volumen en la web, pero a) también sirven sólo para ajustar y, lo que es peor, b) utilizan SendKeys o el movimiento automático del ratón para controlar la interfaz gráfica de usuario. La automatización de la GUI no es una opción.

El ##windows El canal de freenode es tan poco útil como siempre, Google se desborda con hacks y soluciones a medias, y no puedo distinguir una llamada WinAPI de un encantamiento wiccano.

¿Alguien sabe cómo hacerlo?


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

0 votos

Semms como WMI no es una opción :(

0 votos

Posiblemente sea relevante: superuser.com/questions/284527/

0 votos

¿Necesita que amplíe mi respuesta? No estaba seguro de si necesitabas más, ya que pareces tener experiencia con la programación. Puedo proporcionar un ejemplo sobre cómo puede utilizar AutoHotkey para lograr fácilmente su objetivo.

5voto

music2myear Puntos 18479

Esta pregunta fue formulada y respondida en StackOverflow: https://stackoverflow.com/questions/4640106/how-to-get-current-volume-of-system-sound-device-in-Windows-7

La respuesta: https://stackoverflow.com/a/4640225/704977

Está buscando la API EndpointVolume. Forma parte de las nuevas APIs de audio que fueron lanzadas en Windows Vista, y puede ser usada para obtener o establecer el volumen maestro.
... Hay una biblioteca completa de envoltura administrada disponible en CodeProject: Vista Core Audio API Master Volume Control.

0 votos

Gracias por la indicación. ¿Tendré que codificar esto yo mismo o quizá conozcas alguna herramienta que surja de la pregunta/respuesta? No he tocado C# antes: si tengo que codificarlo yo mismo, ¿hay algún compilador disponible libremente?

0 votos

En el peor de los casos, tendrás que descargar Visual Studio C# Express, que es gratuito: microsoft.com/visualstudio/en-us/products/2010-editions/

0 votos

Encontré esta respuesta en particular mientras buscaba una solución a su pregunta. No he seguido investigando para ver si hay un binario compilado ya disponible públicamente.

4voto

Hayden Puntos 11

Sé que dijiste que no querías una solución de AutoHotkey, pero creo que el AutoHotkey API tiene lo que usted busca:

No es necesario crear interfaces gráficas de usuario ni utilizar teclas de acceso rápido con AutoHotkey. Puede escribir potentes utilidades de línea de comandos compilando un .ahk script. Dicho esto, usted querrá mirar el FileAppend para trabajar con stdout .

0 votos

Aquí hay uno que lo hace: gist.github.com/rdp/8363141 (aunque una aplicación de consola directa para ello puede ser más simple/fácil, ver otros comentarios aquí)

0voto

XP1 Puntos 603

El volumen maestro se almacena en la ubicación del registro:

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

Por ejemplo, este archivo REG establece el volumen maestro al 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

El nombre de la llave puede ser diferente. Es necesario reiniciar para que los cambios surtan efecto.

Es posible que no pueda editar o abrir el Properties o {7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc} clave en regedit . Aunque tenga los permisos de acceso necesarios, puede recibir un error como el siguiente:

[Window Title]
Error Opening Key

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

[OK]

Esto se debe a que el nombre de la clave es demasiado largo. Tendrá que renombrar temporalmente el nombre largo de la clave a un carácter y luego volver a renombrarlo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: