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

Я хочу управлять объемом своей системы Windows из сценария VBScript или JScript. Какие-либо идеи?

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

9
задан Helen 7 February 2010 в 09:42
поделиться

2 ответа

Чтобы отключить или включить звук в системе, вы можете имитировать нажатие клавиши 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
9
ответ дан 4 December 2019 в 09:36
поделиться

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

0
ответ дан 4 December 2019 в 09:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: