Как автоматически отключить звук при отключении наушников в Windows 10



Windows 10 может сохранять отдельные аудио профили для разных аудиоустройств. Для каждого подключенного аудиоустройства вы можете установить другой уровень громкости, и когда устройство подключено, громкость будет регулироваться автоматически. Конечно, никто не отключает звуковое устройство все время. Они будут увеличивать или уменьшать громкость, но никто не отключает аудио устройство. Если вы используете пару наушников на рабочем столе и часто должны их отключать, вы можете использовать небольшой скрипт PowerShell, который автоматически отключит звук при отключении наушников.

Это то, что делают мобильные телефоны, т.е. когда вы отключите наушники, музыка останавливается автоматически. 


Автоматическое отключение звука


Откройте «Блокнот» и вставьте следующее:

[CmdletBinding ()]
Param ()

#Adding определения для доступа к Audio API
Add-Type -TypeDefinition @ '
используя System.Runtime.InteropServices;
[Guid ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
интерфейс IAudioEndpointVolume {
// f (), g (), ... являются неиспользуемыми слотами COM-метода. Определите их, если вам интересно
int f (); int g (); int h (); int i ();
int SetMasterVolumeLevelScalar (float fLevel, System.Guid pguidEventContext);
int j ();
int GetMasterVolumeLevelScalar (out float pfLevel);
int k (); int l (); int m (); int n ();
int SetMute ([MarshalAs (UnmanagedType.Bool)] bool bMute, System.Guid pguidEventContext);
int GetMute (out bool pbMute);
}
[Guid ("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
интерфейс IMMDevice {
int Активировать (ref System.Guid id, int clsCtx, int activationParams, out IAudioEndpointVolume aev);
}
[Guid («A95664D2-9614-4F35-A746-DE8DB63617E6»), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)]
интерфейс IMMDeviceEnumerator {
int f (); // Неиспользованный
int GetDefaultAudioEndpoint (int dataFlow, int role, out конечная точка IMMDevice);
}
[ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] класс MMDeviceEnumeratorComObject {}
открытый класс Audio {
static IAudioEndpointVolume Vol () {
var enumerator = new MMDeviceEnumeratorComObject () как IMMDeviceEnumerator;
IMMDevice dev = null;
Marshal.ThrowExceptionForHR (enumerator.GetDefaultAudioEndpoint (/ * eRender * / 0, / * eMultimedia * / 1, out dev));
IAudioEndpointVolume epv = null;
var epvid = typeof (IAudioEndpointVolume) .GUID;
Marshal.ThrowExceptionForHR (dev.Activate (ref epvid, / * CLSCTX_ALL * / 23, 0, out epv));
return epv;
}
public static float Volume {
get {float v = -1; Marshal.ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (out v)); return v;}
set {Marshal.ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (значение, System.Guid.Empty));}
}
public static bool Mute {
get {bool mute; Marshal.ThrowExceptionForHR (Vol (). GetMute (out mute)); return mute; }
set {Marshal.ThrowExceptionForHR (Vol (). SetMute (значение, System.Guid.Empty)); }
}
}
'@ -Подробный


В то время как ($ верно)
{
#Используйте все события в текущем сеансе, начиная с его бесконечного цикла, чтобы начать новый цикл, когда цикл начинается
Get-Event | Remove-Event -ErrorAction SilentlyContinue

#Registering Event и ожидание запуска события
Register-WmiEvent -Class Win32_DeviceChangeEvent
Wait-Event -OutVariable Event | Out-Null

$ EventType = $ Event.sourceargs.newevent | `
Sort-Object TIME_CREATED -Descending | `
Select-Object EventType -ExpandProperty EventType -Первый 1

#Conditional логика для обработки, когда отключить / unMute машина с помощью Audio API
Если ($ EventType -eq 3) 
{
[Audio] :: Mute = $ true
Write-Verbose "Отключено [$ ((Get-Date) .tostring ())]"
}
elseif ($ EventType -eq 2 -and [Audio] :: Mute -eq $ true)
{
[Аудио] :: Mute = $ false
Write-Verbose "UnMuted [$ ((Get-Date) .tostring ())]"
}
}



Сохраните его с расширением файла PS1. Убедитесь, что вы выбрали «Все файлы» в раскрывающемся списке «Тип файла». Дайте файлу имя, которое скажет вам, что он делает. Сохраните это место, которое вряд ли удастся удалить случайно, но также и там, где вы можете легко найти его, если вам нужно.

Запуск сценария


PowerShell не может просто авторизовать скрипт. Существует встроенная мера безопасности, которая мешает ей это делать, но есть способ обойти ее. У нас есть подробная статья о том, как вы можете это сделать. Следуйте инструкциям, чтобы автоматически запускать сценарий PowerShell, который вы только что создали, и использовать запланированную задачу для запуска скрипта каждый раз при загрузке вашего ПК.
Как автоматически отключить звук при отключении наушников в Windows 10 Как автоматически отключить звук при отключении наушников в Windows 10 Reviewed by Admin on июня 08, 2018 Rating: 5

Комментариев нет: