
Я хотел бы отключить звук (windows 10) при выключении монитора. В настоящее время у меня есть настройки питания, чтобы выключать монитор через 15 минут. Я хотел бы, чтобы звук также выключался тогда.
Я не уверен, что в Windows есть встроенный способ сделать это, но если есть внешний инструмент для этого, это тоже поможет.
Редактировать: Решение потенциального дубликата — nircmd сам по себе не дает решения. Это только один из методов отключения звука, если я смогу найти способ запустить его после 15 минут бездействия и заставить его снова включиться при каком-либо действии, например, с настройками питания монитора. Планировщик задач, похоже, не имеет триггера, который мог бы действовать как таймер таким образом.
решение1
Хорошо, это было конкретное шумное приложение, которое я хотел остановить, когда система перешла в режим ожидания (и монитор выключился), но не хотел, чтобы система засыпала. Я понял, что мне все равно, будет ли приложение завершено, поэтому я просто написал однострочный скрипт для его завершения и установил его для триггера простоя в планировщике задач. Не нужно специально завершать том или выяснять, как обнаружить возврат из режима ожидания и восстановить том.
Как ни странно, taskkill /im не сработал, поэтому мне пришлось использовать следующее:
wmic process where name="application.exe" call terminate
решение2
Откройте Панель управления и найдите раздел «Звук» (или просто нажмите «Пуск» и найдите «Изменение системных звуков»), на вкладке «Звук» найдите разделы «Подключение устройства» и «Отключение устройства» в списке событий программы и в раскрывающемся меню ниже выберите «(Нет)».
Обратите внимание, что это также отключит звук Windows при подключении или отключении любого оборудования, например USB, мыши и т. д.
решение3
Я думаю, что это можно сделать относительно легко с помощьюАвтохоткей.
С помощью планировщика задач добавьте задачу с 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 ; timeout in milliseconds
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 ; ms
} Until (A_TimeIdle < idlemuted)
SoundSet 0,,MUTE
idlemuted := 0
}
}
}
Оба сценария можно переписать так, чтобы они реагировали на сообщения Windows, а не простаивали, но даже в этом случае потребление ресурсов незначительно.
Второй скрипт, работающий без прав администратора, может испытывать трудности с обнаружением активности приложений, работающих с правами администратора (он отключит звук после тайм-аута, когда они сфокусированы, несмотря на то, что пользователь выполняет с ними какие-либо действия). Однако если вы время от времени будете переключать фокус на неадминистративные программы, пока не истечет тайм-аут, достаточно будет сбросить таймер. Кроме того, переключение на неадминистративную программу отключит звук, поскольку скрипт обнаружит активность.
Оба скрипта написаны и быстро протестированы для ответа, могут быть ошибки, сообщайте и будьте осторожны :)
PS SE, где подсветка синтаксиса!?