2010-02-07 19 views

risposta

10

Per disattivare o attivare il volume di sistema, è possibile simulare la pressione del tasto Mute con il metodo WshShell.SendKeys:

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

Per quanto riguarda la modifica del livello del volume da uno script, c'è una soluzione che coinvolge alcuni di automazione di Windows, come avviare l'applet Volume di sistema e simulare le scorciatoie da tastiera appropriate al suo interno, ma non penso che sia affidabile. Pertanto ti consiglio di utilizzare qualche utilità esterna in grado di modificare il livello del volume e chiamarlo dal tuo script. Ad esempio, è possibile utilizzare la connessione NirCmd strumento:

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 anche possibile disattivare o attivare il volume 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

Funziona perfettamente, anche per Windows 7 (32 bit)! Ho una correzione, tuttavia, in quanto "mutesysvolume 0" è silenziato e "mutesysvolume 1" è muto. –

+0

Oh, giusto. Risolto il problema. – Helen

+1

nircmd è fantastico, anche in grado di controllare il volume dell'app e i singoli controlli del mixer – akostadinov

0

Dall'interno di una finestra del browser/pagina Web - assolutamente nessun modo. La sicurezza sandbox del browser lo proibirebbe anche se fosse tecnicamente possibile.

Da Windows Script Host (file standalone .vbs o .js) - non sono a conoscenza di ciò. WMI non fornisce il controllo su questo, in base allo this question.

2

Su Windows 7 potrei fare questo controllando le sequenze di tasti che usano 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. 

ho salvato in un file chiamato Mute-Sound.vbs e ha creato un collegamento sul desktop per assegnare un tasto di scelta rapida. CTRL + ALT + F12. Per qualche motivo le scorciatoie da tastiera funzionano solo se sono sul desktop, quindi non sono sicuro di quanto siano affidabili le scorciatoie da tastiera!

1

La risposta di Misty Manor funziona anche su Windows Vita. Questo, ho letteralmente fatto, fa lo stesso in un certo senso.

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. 

Se si vuole diminuire il volume si farebbe

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

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post, e una volta che hai [reputazione] sufficiente (http://stackoverflow.com/help/whats-reputation) essere in grado di [commentare qualsiasi post] (http://stackoverflow.com/help/privileges/comment). –

+0

Lì, l'ho modificato. – Jonco98

7

Il modo migliore che posso vedere per manipolare il livello del volume di sistema su Windows senza la necessità di installare software aggiuntivo è quello di utilizzare VBScript in uno dei seguenti modi:

Toggle sordina: (già citato in una risposta precedente)

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

Aumento:

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

Diminuisce il livello del volume:

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

Questo dovrebbe funzionare per la maggior parte delle macchine moderne di Windows. L'ho provato su Windows 7 e 8.1 e funziona bene anche quando si esegue "do as" in LC, quindi è possibile incorporare questi script all'interno di un eseguibile ed eseguirli senza bisogno di salvarli come singoli file.

+0

Grazie Ryan. Mi hai risparmiato un po 'di tempo nel creare ([una guida, che ho pubblicato su SuperUser, su come farlo usando JavaScript] (http://superuser.com/a/1130667/401839)) – TOOGAM

0

Ho usato nircmd.exe insieme a vbscript per controllare il volume 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]