我想通过 JScript 或 VBScript 脚本控制我的 Windows 系统的音量。有任何想法吗?
另外,如果系统音量静音,我可以取消静音吗?
我想通过 JScript 或 VBScript 脚本控制我的 Windows 系统的音量。有任何想法吗?
另外,如果系统音量静音,我可以取消静音吗?
我认为无需安装其他软件即可在 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”运行它也可以正常工作,因此可以将这些脚本嵌入到可执行文件中并运行它们,而无需将它们保存为单独的文件。
要使系统音量静音或取消静音,您可以使用以下方法模拟 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
在 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。出于某种原因,键盘快捷键只有在桌面上才有效,所以我不确定键盘快捷键有多可靠!
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
http://www.nilpo.com/2008/11/windows-xp/mute-sound-volume-in-wsh/ 他使用多媒体键盘静音键的击键。聪明的 ;-)
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAD))
从浏览器窗口/网页中 - 绝对没有办法。即使在技术上可行,浏览器沙盒安全也会禁止它。
从 Windows 脚本主机(独立的 .vbs 或 .js 文件)中 - 我不知道。根据这个问题,WMI 也不提供对此的控制。
我使用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]