Я хочу управлять объемом своей системы Windows из сценария VBScript или JScript. Какие-либо идеи?
Кроме того, я могу не отключить звук системного тома, если он отключен звук?
Чтобы отключить или включить звук в системе, вы можете имитировать нажатие клавиши 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
Глобальная переменная решит мою проблему сейчас и только с одной ссылкой на $ global: arg _ environment будет легко изменить, если я найду лучший способ ввести свойства.
build.ps1
param(
[Parameter(Position=0,Mandatory=0)]
[string]$task,
[Parameter(Position=1,Mandatory=0)]
[string]$environment = 'dev'
)
clear
$global:arg_environent = $environment
Import-Module .\psake.psm1
Invoke-psake tasks.ps1 $task
Remove-Module psake
tasks.ps1
properties {
$environment = $global:arg_environent
}
task default -depends Deploy
task Deploy {
echo "Copy stuff to $environment"
}
-121--1906121- Я наконец нашел относительно достойное решение.
Идея состоит в том, чтобы переопределить событие OnStateChanged
окна, отменить ограничения Min/Max и обновить его.
Если окно не развернуто, мы просто применим ограничения Min/Max
protected override void OnStateChanged(EventArgs e)
{
if (WindowState == WindowState.Maximized)
{
MinWidth = 0;
MinHeight = 0;
MaxWidth = int.MaxValue;
MaxHeight = int.MaxValue;
if (!m_isDuringMaximizing)
{
m_isDuringMaximizing = true;
WindowState = WindowState.Normal;
WindowState = WindowState.Maximized;
m_isDuringMaximizing = false;
}
}
else if (!m_isDuringMaximizing)
{
MinWidth = 1024;
MinHeight = 768;
MaxWidth = 1024;
MaxHeight = 768;
}
base.OnStateChanged(e);
}
-121--4950631- из окна браузера/веб-страницы - совершенно точно. Безопасность изолированной программной среды в браузере будет запрещена, даже если это технически возможно.
Из Windows Script Host (автономный VBS-файл или JS-файл). WMI также не обеспечивает контроль над этим, согласно этому вопросу .