10

我想通过 JScript 或 VBScript 脚本控制我的 Windows 系统的音量。有任何想法吗?

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

4

7 回答 7

10

我认为无需安装其他软件即可在 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 上对此进行了测试,即使在 LC 中使用“do as”运行它也可以正常工作,因此可以将这些脚本嵌入到可执行文件中并运行它们,而无需将它们保存为单独的文件。

于 2015-01-21T22:45:55.233 回答
9

要使系统音量静音或取消静音,您可以使用以下方法模拟 Mute 按键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
于 2010-02-07T09:14:54.800 回答
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。出于某种原因,键盘快捷键只有在桌面上才有效,所以我不确定键盘快捷键有多可靠!

于 2012-08-21T12:22:52.253 回答
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
于 2014-05-04T16:24:54.580 回答
1

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

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAD))
于 2013-12-04T13:06:29.583 回答
0

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

从 Windows 脚本主机(独立的 .vbs 或 .js 文件)中 - 我不知道。根据这个问题,WMI 也不提供对此的控制。

于 2010-02-07T09:00:36.197 回答
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]
于 2017-07-09T19:43:02.527 回答