Domanda

Voglio controllare il volume del mio sistema di Windows da uno script JScript o VBScript. Tutte le idee?

Inoltre, posso riattivare il volume di sistema, se è disattivato?

È stato utile?

Soluzione

Per disattivare o attivare il volume di sistema, è possibile simulare la pressione del tasto Mute utilizzando 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 ad esempio il lancio del applet del volume del sistema e simulare le scorciatoie da tastiera appropriate in essa, ma non credo che sia affidabile. Quindi vi consiglio di utilizzare alcune utilità esterno in grado di cambiare il livello del volume, e lo chiamano dallo script. Ad esempio, è possibile utilizzare il 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 può anche 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

Altri suggerimenti

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 mute: (già citato in una risposta precedente)

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

Aumento del volume:

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

livello del volume Diminuzione:

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

Questo dovrebbe funzionare per la maggior parte delle macchine moderne di Windows. Ho provato questo su Windows 7 e 8.1 e funziona bene anche quando eseguito con "fare come" in LC, quindi è possibile incorporare questi script all'interno di un eseguibile ed eseguirli senza la necessità di salvarli come singoli file.

In 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 creato un collegamento sul desktop per assegnare un tasto di scelta rapida. CTRL + ALT + F12 . Per qualche ragione i tasti di scelta rapida funzionano solo se sono sul desktop, quindi non sono sicuro di come affidabili le scorciatoie da tastiera sono!

Risposta di Misty Manor funziona su Windows Vita pure. Questo, ho letteralmente appena fatto, fa la stessa cosa 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

http: //www.nilpo .com / 2008/11 / windows-xp / mute-sound-volume-in-WSH / Egli usa una combinazione di tasti di una tastiera tasto mute Multimedia. Clever; -)

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

Da all'interno di una pagina / web finestra del browser - sicuramente nessun modo a tutti. Protezione del browser sandbox vieterebbe anche se fosse tecnicamente possibile.

Da Windows Script Host (vbs standalone o il file .js) - in nessun modo che io sia a conoscenza. WMI non fornisce il controllo su questa operazione, in base alle questa domanda .

Ho usato nircmd.exe insieme 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]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top