Как управлять громкостью системы Windows с помощью JScript или VBScript?

Я хочу контролировать громкость моей системы Windows из скрипта JScript или VBScript. Есть идеи?

Также можно ли включить звук системы, если он отключен?

7 ответов

Решение

Чтобы отключить или включить звук системы, вы можете смоделировать нажатие клавиши отключения звука, используя 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 без необходимости установки дополнительного программного обеспечения - использовать 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, поэтому можно встроить эти сценарии в исполняемый файл и запускать их без необходимости сохранять их как отдельные файлы.

В 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. По какой-то причине сочетания клавиш работают, только если они находятся на рабочем столе, поэтому я не уверен, насколько надежны сочетания клавиш!

Ответ Мисти Мэнор работает и на 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 Script Host (автономный файл.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]
Другие вопросы по тегам