Pregunta

Quiero controlar el volumen de mi sistema Windows desde un script JScript o VBScript. ¿Algunas ideas?

Además, ¿puedo activar el volumen del sistema si está silenciado?

¿Fue útil?

Solución

Para silenciar o deshacer el volumen del sistema, puede simular la tecla de silencio presionarse utilizando el WshShell.SendKeys método:

var oShell = new ActiveXObject("WScript.Shell");
oShell.SendKeys(Chr(&HAD));

En cuanto a cambiar el nivel de volumen de un script, hay una solución que implica algunas automatización de Windows, como el lanzamiento del applet de volumen del sistema y simula los atajos de teclado apropiados, pero no creo que sea confiable. Por lo tanto, le recomiendo que use una utilidad externa capaz de cambiar el nivel de volumen y llamarlo desde su script. Por ejemplo, podría usar el gratis Nircmd herramienta:

var oShell = new ActiveXObject("WScript.Shell");

// Increase the system volume by 20000 units (out of 65535)
oShell.Run("nircmd.exe changesysvolume 20000");

// Decrease the system volume by 5000 units
oShell.Run("nircmd.exe changesysvolume -5000");

NIRCMD también puede silenciar o activar el volumen del sistema:

var oShell = new ActiveXObject("WScript.Shell");
oShell.Run("nircmd.exe mutesysvolume 0");  // unmute
oShell.Run("nircmd.exe mutesysvolume 1");  // mute
oShell.Run("nircmd.exe mutesysvolume 2");  // switch between mute and unmute

Otros consejos

La mejor manera que puedo ver para manipular el nivel de volumen del sistema en Windows sin la necesidad de instalar un software adicional es usar VBScript de una de las siguientes maneras:

Alternar apagado: (ya mencionado en una respuesta anterior)

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAD))

Aumentar el nivel de volumen:

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAF))

Disminuir el nivel de volumen:

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAE))

Esto debería funcionar para la mayoría de las máquinas de Windows modernas. He probado esto en Windows 7 y 8.1 y funciona bien incluso cuando se ejecuta con "hacer como" en LC, por lo que es posible incrustar estos scripts dentro de un ejecutable y ejecutarlos sin la necesidad de guardarlos como archivos individuales.

En Windows 7 podría hacer esto controlando las pulsaciones de teclas usando WScript.

set oShell = CreateObject("WScript.Shell") 
oShell.run"%SystemRoot%\System32\SndVol.exe" 
WScript.Sleep 1500 
oShell.SendKeys"{TAB} " ' Tab to the mute and press space
oShell.SendKeys"%{F4}"  ' ALT F4 to exit the app.

Lo guardé en un archivo llamado mute-sound.vbs y creé un acceso directo en el escritorio para asignar una tecla de acceso directo. CONTROL+Alternativo+F12. Por alguna razón, los atajos de teclado solo funcionan si están en el escritorio, ¡así que no estoy seguro de cuán confiables son los atajos de teclado!

La respuesta de Misty Manor también funciona en Windows Vita. Esto, literalmente, acabo de hacer, hace lo mismo en cierto sentido.

set oShell = CreateObject("WScript.Shell") 
oShell.run"%SystemRoot%\System32\SndVol.exe" 'Runs The Master Volume App.
WScript.Sleep 1500 'Waits For The Program To Open
oShell.SendKeys("{PGUP}") 'Turns Up The Volume 20, If It Is Muted Then It Will Unmute It
oShell.SendKeys("{PGUP}") 'Turns Up The Volume 20
oShell.SendKeys("{PGUP}") 'Turns Up The Volume 20
oShell.SendKeys("{PGUP}") 'Turns Up The Volume 20
oShell.SendKeys("{PGUP}") 'Turns Up The Volume 20
oShell.SendKeys"%{F4}"  ' ALT F4 To Exit The App.

Si desea disminuir el volumen que haría

oShell.SendKeys("{PGDN}") 'It Will Decrease The Volume By 20

http://www.nilpo.com/2008/11/windows-xp/mute-sound-volume-in-wsh/Utiliza una tecla de teclado de una tecla de silencio de teclado multimedia. Inteligente ;-)

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAD))

Desde dentro de una ventana de navegador/página web, definitivamente de ninguna manera. El navegador Sandbox Security lo prohibiría incluso si fuera técnicamente posible.

Desde Windows Script Host (archivo .vbs standalone o .js), de ninguna manera que conozca. WMI tampoco proporciona control sobre esto, según esta pregunta.

solía nircmd.exe junto con VBScript para controlar el volumen del sistema.

Set objShell = CreateObject("WScript.Shell") 
If Not WScript.Arguments.Named.Exists("elevate") Then
  CreateObject("Shell.Application").ShellExecute WScript.FullName _
    , """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1
  WScript.Quit
End If
objShell.Run("nircmd.exe setvolume 0 0 0") 

'Set WshShell = WScript.CreateObject("WScript.Shell")
'WshShell.Popup "Success", "5", "MuteSpeaker"

' to successfully run this vbscript during log-off, nircmd.exe during should be present in "C:\Windows\System32"
' [cscript //X scriptfile.vbs MyArg1 MyArg2]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top