2010-02-07 30 views

Respuesta

10

Para silenciar o activar el volumen del sistema, se puede simular la pulsación de tecla Mute utilizando el WshShell.SendKeys método:

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

Como para cambiar el nivel de volumen de un guión, hay una solución que implica una cierta automatización de Windows, como iniciar el applet de System Volume y simular los atajos de teclado apropiados en él, pero no creo que sea confiable. Por lo tanto, le recomiendo que utilice alguna utilidad externa capaz de cambiar el nivel de volumen y llamarlo desde su secuencia de comandos. Por ejemplo, se puede utilizar la herramienta gratuita NirCmd:

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 
+2

Esto funciona perfectamente, ¡incluso para Windows 7 (32 bits)! Tengo una corrección, sin embargo, en que "mutesysvolume 0" se activa y "mutesysvolume 1" es mudo. –

+0

Ah, claro. Solucionado eso. – Helen

+1

nircmd es increíble, incluso puede controlar el volumen de la aplicación y los controles del mezclador individuales – akostadinov

0

Desde dentro de una ventana del navegador/página web - definitivamente no hay manera. La seguridad del espacio aislado del navegador lo prohibiría incluso si fuera técnicamente posible.

Desde Windows Script Host (archivo .vbs o .js independiente): no hay forma que yo sepa. WMI tampoco proporciona control sobre esto, de acuerdo con this question.

2

En Windows 7 podría hacer esto mediante el control de las pulsaciones de teclas utilizando 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. 

I guardado en un archivo llamado Silencio-Sound.vbs y crea un acceso directo en el escritorio para asignar una tecla de acceso directo. CTRL + ALT + 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.

1

respuesta de Misty Manor funciona en Windows Vita también. Esto, literalmente, lo hice, 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 bajar el volumen que haría

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

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) lo hará poder [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment). –

+0

Allí, lo edité. – Jonco98

7

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

Activar silenciado: (ya mencionado en una respuesta anterior)

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

Aumento:

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

Reducir 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 modernas de Windows. 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 insertar estos scripts dentro de un archivo ejecutable y ejecutarlos sin la necesidad de guardarlos como archivos individuales.

+0

Gracias Ryan. Me ahorraste un tiempo creando ([una guía, que publiqué en SuperUser, sobre cómo hacer esto usando JavaScript] (http://superuser.com/a/1130667/401839)) – TOOGAM

0

Usé 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] 
Cuestiones relacionadas