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

Вопрос или проблема

Я хотел бы выключить звук (Windows 10), когда монитор выключается. В настоящее время у меня настройки питания таковы, что монитор выключается через 15 минут. Я хотел бы, чтобы звук отключался в это же время.

Я не уверен, есть ли встроенный способ сделать это в Windows, но если есть внешнее средство для этого, это тоже поможет.

Правка: Отвечая на возможное дублирование — nircmd сам по себе не дает решения. Это всего лишь один метод отключения звука, если мне удастся найти способ запустить его после 15 минут бездействия и снова включить при каком-либо действии, как с настройками питания монитора. Планировщик задач, похоже, не имеет триггера, который можно было бы использовать как таймер в этом смысле.

Хорошо, это было специальное приложение, издающее шум, которое я хотел остановить, когда система переходила в состояние бездействия (и монитор выключался), но не хотел, чтобы система переходила в спящий режим. Я понял, что мне все равно, если приложение будет убито, так что я просто написал однострочный скрипт, чтобы его убить, и установил его для триггера бездействия в планировщике задач. Нет необходимости убивать звук в частности или выяснять, как обнаружить возвращение из бездействия и восстановить звук.

Странно, но taskkill /im не работал, поэтому мне пришлось использовать следующее:

wmic process where name="application.exe" call terminate

Откройте Панель управления и найдите Звук (или просто нажмите “Пуск” и поищите “Изменить системные звуки”), на вкладке “Звук” найдите Подключение устройства и Отключение устройства в списке События программы, и в выпадающем меню ниже выберите “(Нет)”.

Обратите внимание, что это также остановит Windows от воспроизведения звука при подключении или отключении любого оборудования, такого как USB, мышь и т. д.

Я думаю, это можно относительно легко сделать с помощью Autohotkey.

С помощью планировщика задач добавьте задачу с Программой: C:\path\to\autohotkey.exe Параметры: "C:\...path\to\script.ahk", чтобы запускать при бездействии под вашей учетной записью (только когда пользователь вошел в систему, снимите галочку [ ] Остановить, если компьютер перестанет быть бездействующим, скрипт выключит звук и выйдет сам):

script.ahk:

#NoEnv

SoundGet manually_muted,,MUTE
If (manually_muted = "Off") {
    currently_idle := A_TimeIdle
    SoundSet 1,,MUTE
    Loop
    {
        Sleep 1000
    } Until (A_TimeIdle < currently_idle)
    SoundSet 0,,MUTE
}
ExitApp

Без планировщика задач используйте следующий скрипт (просто запустите его, он будет оставаться в памяти, используя около 4 МБ ОЗУ):

#NoEnv
#NoTrayIcon
#Persistent
#SingleInstance force

TimeIdleToMute_ms := 15 * 60 * 1000 ; таймаут в миллисекундах

SetTimer MuteUntilIdleEnds, % TimeIdleToMute_ms

Exit

MuteUntilIdleEnds() {
    global TimeIdleToMute_ms
    static idlemuted := 0

    If (!idlemuted && A_TimeIdle > TimeIdleToMute_ms) {
        SoundGet manually_muted,,MUTE
        If (manually_muted = "Off") {
            idlemuted := A_TimeIdle
            SoundSet 1,,MUTE
            Loop
            {
                Sleep 1000 ; мс
            } Until (A_TimeIdle < idlemuted)
            SoundSet 0,,MUTE
            idlemuted := 0
        }
    }
}

Оба скрипта могут быть переписаны, чтобы реагировать на сообщения Windows вместо цикла бездействия, но даже сейчас потребление ресурсов незначительно.

Второй скрипт, при запуске без прав администратора, может иметь проблемы с обнаружением активности приложений, работающих с правами администратора (он будет выключать звук по истечении таймаута, когда они в фокусе, несмотря на то, что пользователь работает с ними). Однако если вы время от времени переключаете фокус на программы без прав администратора до истечения таймаута, этого будет достаточно для сброса таймера. Кроме того, переключение на программу без прав администратора завершит отключение звука, поскольку скрипт обнаружит активность.

Оба скрипта написаны и быстро протестированы для ответа, могут быть ошибки, сообщите и остерегайтесь 🙂

P.S. SE, где подсветка синтаксиса!?

Ответ или решение

Чтобы отключить звук при выключении монитора в Windows 10, вам, возможно, придется применить несколько различных подходов. Поскольку в самой операционной системе нет встроенной функции для автоматического контроля звука в зависимости от состояния дисплея, вот несколько эффективных методов, которые помогут вам решить вашу задачу.

1. Использование Task Scheduler и WMIC

Если вы хотите остановить звук определенного приложения при отключении монитора, вы можете использовать планировщик задач. Данный метод требует создания задачи, которая завершает процесс вашего приложения после определенного времени бездействия.

Шаги:

  1. Откройте Планировщик задач:

    • Нажмите на клавиши Win + R, введите taskschd.msc и нажмите Enter.
  2. Создайте новую задачу:

    • В меню «Действия» выберите «Создать задачу».
  3. Настройте триггер:

    • Перейдите на вкладку «Триггеры» и выберите «Создать» для добавления нового триггера.
    • Выберите тип триггера «При простое время неактивности» и установите время на 15 минут.
  4. Настройте действие:

    • На вкладке «Действия» выберите «Создать» и затем в поле «Программа или скрипт» укажите wmic.
    • В поле «Добавить аргументы» введите:
      process where name="application.exe" call terminate
    • Замените application.exe на имя вашего конкретного приложения.
  5. Отключите параметр «Остановить, если компьютер перестает быть неактивным».

2. Использование AutoHotkey

Если вы хотите более гибкий контроль за звуком в зависимости от состояния системы, вы можете использовать AutoHotkey. Это мощный инструмент, который позволяет создавать скрипты для автоматизации множества задач в Windows.

Шаги по созданию скрипта:

  1. Скачайте и установите AutoHotkey с официального сайта.

  2. Создайте новый скрипт:

    • Нажмите правой кнопкой мыши на рабочем столе, выберите «Создать» -> «AutoHotkey Script» и назовите файл.
  3. Редактируйте скрипт:

    • Добавьте следующий код в ваш скрипт:
    #NoEnv
    #Persistent
    #SingleInstance, Force
    
    TimeIdleToMute_ms := 15 * 60 * 1000 ; таймаут в миллисекундах
    
    SetTimer MuteUntilIdleEnds, % TimeIdleToMute_ms
    
    Return
    
    MuteUntilIdleEnds() {
       global TimeIdleToMute_ms
       static idlemuted := 0
    
       If (!idlemuted && A_TimeIdle > TimeIdleToMute_ms) {
           SoundGet, manually_muted,, MUTE
           If (manually_muted = "Off") {
               idlemuted := A_TimeIdle
               SoundSet, 1,, MUTE
               Loop {
                   Sleep, 1000 ; мс
               } Until (A_TimeIdle < idlemuted)
               SoundSet, 0,, MUTE
               idlemuted := 0
           }
       }
    }
  4. Сохраните изменения и дважды щелкните на скрипте, чтобы запустить его.

3. Настройки звука в Windows

Если вы хотите отключить системные звуки, связанные с подключением и отключением устройств, вы можете сделать это следующим образом:

  1. Откройте Панель управления и выберите Звук.
  2. Перейдите на вкладку Звуки.
  3. Найдите события Device Connect и Device Disconnect в списке и установите для них значение (Нет).

Следует учитывать, что это также отменит звуки при подключении или отключении USB-устройств.

Заключение

Каждый из предложенных методов имеет свои преимущества и недостатки. Выберите тот, который лучше всего соответствует вашим потребностям. Используя Task Scheduler и AutoHotkey, вы сможете качественно управлять звуками, избегая ненужных раздражающих сигналов, когда экран отключен.

Оцените материал
Добавить комментарий

Капча загружается...