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. Idealmente, me permitiría obtener y establecer todos los volúmenes, incluidos los niveles de aplicación, pero me conformaría con obtener solo y solo el nivel maestro. No me importa si se usa PowerShell
, WMI
, JavaScript
, .Net
, vudú, o mariposas. Cualquier solución que solo me dé un número que pueda procesar para un rango de 0% a 100% funcionará.
Dicho de otra manera, las partes de solicitud son el cuadro negro 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 pasar algún tiempo para envolverlo o incluso escribir algo yo mismo si las herramientas para hacerlo están disponibles gratuitamente. En el último caso, necesitaría algunos punteros / prueba de concepto para el núcleo, pero puedo manejar el ruft por mi cuenta. También me gustaría evitar instalar nuevos marcos de desarrollo solo para este propósito (tenga en cuenta que las respuestas de music2myear e iglvzx se dieron antes de que introdujera estos requisitos).
Como "plataformas", tengo disponible:
- todo lo que viene con Windows 7 Home Premium
- todo lo que viene con Cygwin
- Perl
- Pitón
- Rubí
En general, las soluciones de código abierto son muy preferidas. Las herramientas de código cerrado están bien siempre que sean gratuitas y se pueda confiar en la fuente. Las soluciones comerciales son prohibidas.
Lo que no necesito
- Hay algunas preguntas similares que se ocupan principalmente de configurar el volumen. Sobre todo, necesito obtener el volumen, no establecerlo.
- Hay
nircmdc
, que admite la configuración de volumen, pero no obtener. - Hay una clave [1] en mi registro que tiene valores que cambian de manera predecible cuando ajusto el volumen a través del mezclador GUI, pero supongo que la lectura de esa clave es propensa a la rotura de cambios de hardware o actualizaciones del sistema. A menos que pueda confiar en que la solución esté razonablemente preparada para el futuro, no puedo usarla.
- Hay
AutoHotKey
yWSH
soluciones para configurar el volumen en la Web, pero a) también son buenas para configurar y, lo que es peor, b) usanSendKeys
el movimiento automático del mouse para controlar la GUI. Automatizar la GUI no es una opción.
El ##windows
canal en freenode es inútil como siempre, Google se desborda con hacks y soluciones a medio hacer, y no puedo distinguir una llamada WinAPI de un encantamiento Wiccan.
¿Alguien sabe de alguna manera?
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\MixerSettings\eLineOutTopo\PrimaryNode000
Respuestas:
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
fuente
Sé que dijiste que no querías una solución AutoHotkey, pero creo que la API de AutoHotkey tiene lo que estás buscando:
No necesita crear GUI ni utilizar teclas de acceso rápido con AutoHotkey. Puede escribir potentes utilidades de línea de comandos compilando un
.ahk
script. Dicho esto, tendrá que mirar el comando FileAppend para trabajar constdout
.fuente
El volumen maestro se almacena en la ubicación del registro:
Por ejemplo, este archivo REG establece el volumen maestro al 100%.
El nombre de la clave puede diferir. Debe reiniciar para que los cambios surtan efecto.
Es posible que no pueda editar o abrir la tecla
Properties
o . Aunque tiene los permisos de acceso necesarios, puede recibir un error como este:{7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc}
regedit
Esto se debe a que el nombre de la clave es demasiado largo. Tendrá que cambiar temporalmente el nombre de la clave larga a un carácter y luego cambiarle el nombre.
fuente