如何使用JScript或VBScript控制Windows系统卷?

时间:2010-02-07 07:53:49

标签: windows vbscript javascript volume mute

我想从JScript或VBScript脚本控制Windows系统的音量。有什么想法吗?

另外,如果系统音量被静音,我可以取消静音吗?

7 个答案:

答案 0 :(得分:10)

要使系统音量静音或取消静音,您可以使用WshShell.SendKeys方法模拟静音键按下:

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

至于从脚本更改音量级别,有一个涉及一些Windows自动化的解决方案,例如启动System Volume小程序并在其中模拟相应的键盘快捷键,但我不认为它是可靠的。因此,我建议您使用一些能够更改音量级别的外部实用程序,并从脚本中调用它。例如,您可以使用免费的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还可以将系统音量静音或取消静音:

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

答案 1 :(得分:8)

我可以看到在Windows上操作系统音量级别而无需安装其他软件的最佳方法是使用以下一种方式使用VBScript:

切换静音:(在之前的回答中已经提到过)

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

提高音量:

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

降低音量水平:

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

这适用于大多数现代Windows机器。我已经在Windows 7和8.1上对此进行了测试,即使在使用" do as"在LC中,因此可以将这些脚本嵌入到可执行文件中并运行它们,而无需将它们另存为单个文件。

答案 2 :(得分:2)

在Windows 7上,我可以通过使用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.

我将其保存到名为Mute-Sound.vbs的文件中,并在桌面上创建了一个快捷键以指定快捷键。 CTRL + ALT + F12 。由于某种原因,键盘快捷键只有在桌面上才有效,所以我不确定键盘快捷键的可靠性是多少!

答案 3 :(得分:2)

Misty Manor的答案也适用于Windows Vita。从某种意义上说,我实际上就是这样做了。

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.

如果你想降低音量

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

答案 4 :(得分:1)

http://www.nilpo.com/2008/11/windows-xp/mute-sound-volume-in-wsh/ 他使用多媒体键盘静音键的击键。聪明; - )

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

答案 5 :(得分:0)

从浏览器窗口/网页中 - 绝对没有办法。即使技术上可行,浏览器沙盒安全性也会禁止它。

从Windows脚本宿主(独立的.vbs或.js文件)中 - 我不知道。根据{{​​3}},WMI也无法控制这一点。

答案 6 :(得分:0)

我使用nircmd.exe和vbscript来控制系统音量。

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]