Как автоматично заглушаване на звука, когато слушалките са изключени от Windows 10

click fraud protection

Windows 10 може да поддържа отделни аудио профили за различни аудио устройства. За всяко аудио устройство, което свързвате, можете да зададете различно ниво на силата на звука и когато устройството е свързано, силата на звука ще се регулира автоматично. Разбира се, никой не поддържа аудио устройство заглушено през цялото време. Те ще увеличават или намаляват силата на звука, но никой обичайно не заглушава аудиоустройството.

Ако използвате чифт слушалки с вашия работен плот и често се налага да ги изключвате, можете да използвате малко скрипт PowerShell, който автоматично ще заглуши звука, когато изключите слушалките.

Това е нещо, което правят мобилните телефони, т.е. когато изключите слушалките, музиката спира автоматично. Логиката зад това е, че или сте слушали музика, или случайно сте извадили слушалките и се нуждаете от бърз начин да я изключите. Сценарият е написан на същия принцип от Пратеек Сингх от GEEKEEFY.

Автоматично заглушаване на звука

Отворете Бележника и поставете следното;

[Cmdletbinding ()] Param () # Добавяне на дефиниции за достъп до аудио API. Add-Type -TypeDefinition @ ' използвайки System. Runtime. InteropServices; [Ръководство ("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. Ръководство pguidEventContext); int j (); int GetMasterVolumeLevelScalar (out float pfLevel); int k (); int l (); int m (); int n (); int SetMute ([MarshalAs (UnmanagedType) Bool)] bool bMute, Система. Ръководство pguidEventContext); int GetMute (вън bool pbMute); } [Ръководство ("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType (ComInterfaceType InterfaceIsIUnknown)] интерфейс IMMDevice { int Активиране (ref система). 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 роля, крайната точка на IMMDevice); } [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] клас MMDeviceEnumeratorComObject {} публична класа Audio { статичен IAudioEndpointVolume Vol () { var enumerator = нов MMDeviceEnumeratorComObject () като IMMDeviceEnumerator; IMMDevice dev = null; Маршал. ThrowExceptionForHR (Enumerator. GetDefaultAudioEndpoint (/ * eRender * / 0, / * eMultimedia * / 1, out dev)); IAudioEndpointVolume epv = null; var epvid = typeof (IAudioEndpointVolume) .GUID; Маршал. ThrowExceptionForHR (Дев. Активиране (ref epvid, / * CLSCTX_ALL * / 23, 0, вън epv)); връщане epv; } публичен статичен поплавък Обем { получи {float v = -1; Маршал. ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (out v)); return v;} набор {Маршал. ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (стойност, система. GUID. Празна));} } публично статично bool Mute { получите {bool mute; Маршал. ThrowExceptionForHR (Vol (). GetMute (извън звука)); връщане на звука; } набор {Маршал. ThrowExceptionForHR (Vol (). SetMute (стойност, система. GUID. Празна)); } } } '@ -Verbose Докато ($ true) { # Изчистете всички събития в текущата сесия, тъй като е в безкраен цикъл, за да направите нов старт, когато цикълът започне. Get-Event | Remove-Event -ErrorAction SilentlyContinue # Регистриране на събитието и чакане на събитието да се задейства. Регистрация-WmiEvent -Class Win32_DeviceChangeEvent. Wait-Event -OutVariable Event | Out-Null $ EventType = $ Event.sourceargs.newevent | ` Сортиране-обект TIME_CREATED -Напред | ` Select-Object EventType -ExpandProperty EventType -First 1 #Условна логика за работа, кога да изключите / изключите устройството чрез аудио API. Ако ($ EventType -eq 3) { [Аудио]:: Изключване на звука = $ true. Напишете многословно „Заглушено [$ ((Get-Date) .tostring ())]“ } elseif ($ EventType -eq 2 -и [Audio]:: Изключване -eq $ true) { [Аудио]:: Изключване на звука = $ false. Напишете многословно "UnMuted [$ ((Get-Date) .tostring ())]" } }
instagram viewer

Запазете го с разширението на PS1 файл. Уверете се, че изберете „Всички файлове“ от падащия тип на файла. Дайте име на файла, което ще ви каже с един поглед какво прави. Запазете го на някое място, което е малко вероятно да го изтриете случайно, но също и там, където можете лесно да го намерите, ако трябва.

Изпълнение на сценария

PowerShell не може просто да стартира автоматично скрипт. Има вградена мярка за сигурност, която не му позволява да го прави, но има начин за това. Имаме подробна статия за това как можете да направите точно това. Следвайте инструкциите за автоматично стартирайте скрипта PowerShell току-що създадохте и използвайте планирана задача, за да стартирате скрипта всеки път, когато стартирате компютъра си.

Освен това можете ръчно да стартирате скрипта, когато стартирате системата си. Използвам го по-малко от 30 минути и не знам как живеех без него преди.

watch instagram story