O que eu preciso
Estou procurando uma ferramenta ou um script que permita acessar os níveis de volume do Windows na linha de comando. Idealmente, permitiria obter e definir todos os volumes, incluindo níveis de aplicativo, mas eu aceitaria apenas obter e apenas o nível mestre. Eu não me importo se ele usa PowerShell
, WMI
, JavaScript
, .Net
, voodoo, ou borboletas. Qualquer solução que me forneça apenas um número que eu possa processar para ajustar um intervalo de 0% a 100% serve.
Em outras palavras, as partes do prompt são a caixa preta que preciso preencher:
C:\> getvol master
50
ou mesmo
C:\> wmic <alias> where "device='master' and name='volume'" get name,value
Name Value
Volume 0xDEADBEEF
Não me importo se tiver que gastar algum tempo para embrulhá-lo ou mesmo escrever alguma coisa, se as ferramentas para fazê-lo estiverem disponíveis gratuitamente. No último caso, eu precisaria de alguns indicadores / prova de conceito para o núcleo, mas posso gerenciar o cruft sozinho. Também gostaria de evitar a instalação de novas estruturas de desenvolvimento apenas para esse fim (observe que as respostas do music2myear e do iglvzx foram fornecidas antes da introdução desses requisitos).
Como "plataformas", tenho disponível:
- tudo o que acompanha o Windows 7 Home Premium
- tudo o que acompanha o Cygwin
- Perl
- Pitão
- Rubi
Geralmente, as soluções de código aberto são muito preferidas. As ferramentas de código fechado são válidas desde que sejam freeware e a fonte possa ser confiável. Soluções comerciais são proibidas.
Do que eu não preciso
- Existem algumas perguntas semelhantes que tratam principalmente da definição do volume. Acima de tudo, preciso obter o volume, não definido.
- Existe
nircmdc
, que suporta a configuração de volume, mas não a obtenção. - Existe uma chave [1] no meu registro que possui valores que mudam previsivelmente quando ajusto o volume através do misturador da GUI, mas acho que a leitura dessa chave é propensa a falhas nas alterações de hardware ou nas atualizações do sistema. A menos que eu possa confiar que a solução é razoavelmente à prova de futuro, não posso usá-la.
- Existem
AutoHotKey
eWSH
soluções para configurar o volume na Web, mas a) elas também são boas apenas para configurar e, pior ainda, b) usamSendKeys
ou automatizam o movimento do mouse para controlar a GUI. Automatizar a GUI não é uma opção.
O ##windows
canal no freenode é inútil como sempre, o Google transborda de hacks e soluções alternativas incompletas, e não consigo distinguir uma chamada WinAPI de um encantamento Wiccan.
Alguém sabe de uma maneira?
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E96C-E325-11CE-BFC1-08002BE10318}\0000\MixerSettings\eLineOutTopo\PrimaryNode000
Respostas:
Esta pergunta foi feita e respondida no StackOverflow: /programming/4640106/how-to-get-current-volume-of-system-sound-device-in-windows-7
A resposta: /programming//a/4640225/704977
fonte
Sei que você disse que não queria uma solução AutoHotkey, mas acredito que a API AutoHotkey tem o que você está procurando:
Você não precisa criar GUIs ou usar teclas de atalho com a AutoHotkey. Você pode escrever poderosos utilitários de linha de comando compilando um
.ahk
script. Dito isto, você desejará examinar o comando FileAppend para trabalharstdout
.fonte
O volume principal é armazenado no local do registro:
Por exemplo, este arquivo REG define o volume principal para 100%.
O nome da chave pode ser diferente. Você precisa reiniciar para que as alterações tenham efeito.
Talvez você não consiga editar ou abrir a tecla
Properties
ou . Embora você tenha as permissões de acesso necessárias, você pode receber um erro como este:{7fb7b48f-531d-44a2-bcb3-5ad5a134b3dc}
regedit
Isso ocorre porque o nome da chave é muito longo. Você precisará renomear temporariamente o nome da chave longa para um caractere e, em seguida, renomeá-lo novamente.
fonte