Как управлять громкостью системы Windows с помощью JScript или VBScript? - PullRequest
9 голосов
/ 07 февраля 2010

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

Кроме того, можно ли включить звук системы, если он отключен?

Ответы [ 7 ]

10 голосов
/ 07 февраля 2010

Чтобы отключить или включить звук системы, вы можете смоделировать нажатие клавиши отключения звука, используя метод 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
8 голосов
/ 22 января 2015

Лучший способ манипулировать уровнем громкости системы в 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 голосов
/ 04 мая 2014

Ответ Мисти Мэнор Работает и на 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
2 голосов
/ 21 августа 2012

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

1 голос
/ 04 декабря 2013

http://www.nilpo.com/2008/11/windows-xp/mute-sound-volume-in-wsh/ Он использует нажатие клавиши отключения звука мультимедийной клавиатуры. Умный; -)

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys(chr(&hAD))
0 голосов
/ 09 июля 2017

Я использовал 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]
0 голосов
/ 07 февраля 2010

Из окна браузера / веб-страницы - определенно никак. Безопасность изолированной программной среды браузера запретила бы это, даже если бы это было технически возможно.

Изнутри Windows Script Host (автономный файл .vbs или .js) - я не знаю об этом. WMI также не обеспечивает контроль над этим, согласно этому вопросу .

...