Reklama

Czy nie byłoby wspaniale, gdybyś mógł automatycznie wyciszyć dźwięk z komputera przy każdym odłączeniu słuchawek? Zapobiegnie to przypadkowemu przebudzeniu współlokatorów o małych porannych porach lub omyłkowym ujawnieniu publicznej miłości do Britney Spears.

Oczywiście można wyciszyć głośniki i słuchawki indywidualnie dla każdego przypadku za pomocą miksera głośności. (Dowiedz się więcej o dostosowywaniu dźwięku w systemie Windows 10). Ale szczerze mówiąc, nie trzeba tego robić, gdy można zautomatyzować go za pomocą programu PowerShell.

Oto jak automatycznie wyciszyć dźwięk z komputera po zdjęciu słuchawek, podobnie jak smartfony.

Aby rozpocząć, otwórz Notatnik. Następnie wklej następujący kod do pustego dokumentu:

[cmdletbinding ()] Param () # Dodawanie definicji dostępu do Audio API. Add-Type -TypeDefinition @ ' using System. Środowisko wykonawcze InteropServices; [Guid („5CDF2C82-841E-4546-9722-0CF74078229A”), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] interfejs IAudioEndpointVolume { // f (), g (),... są nieużywanymi gniazdami metod COM. Zdefiniuj je, jeśli cię to obchodzi. 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)] interfejs IMMDevice { int Aktywuj (patrz System. Guid id, int clsCtx, int aktywacjaParamy, obecnie IAudioEndpointVolume aev); } [Guid („A95664D2-9614-4F35-A746-DE8DB63617E6”), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] interfejs IMMDeviceEnumerator { int f (); // Nieużywane. int GetDefaultAudioEndpoint (int dataFlow, int rola, out IMMDevice endpoint); } [ComImport, Guid („BCDE0395-E52F-467C-8E3D-C4579291692E”)] klasa MMDeviceEnumeratorComObject {} Audio klasy publicznej { static IAudioEndpointVolume Vol () { var enumerator = new MMDeviceEnumeratorComObject () as IMMDeviceEnumerator; IMMDevice dev = null; Marszałek. ThrowExceptionForHR (moduł wyliczający. GetDefaultAudioEndpoint (/ * eRender * / 0, / * eMultimedia * / 1, out dev)); IAudioEndpointVolume epv = null; var epvid = typeof (IAudioEndpointVolume) .GUID; Marszałek. ThrowExceptionForHR (dev. Aktywuj (ref epvid, / * CLSCTX_ALL * / 23, 0, out epv)); zwraca epv; } public static float Volume { get {zmiennoprzecinkowa v = -1; Marszałek. ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (out v)); return v;} set {Marszałek. ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (wartość, System. Guid. Pusty));} } public static bool Mute { get {bool mute; Marszałek. ThrowExceptionForHR (Vol (). GetMute (out mute)); wyciszenie powrotu; } set {Marszałek. ThrowExceptionForHR (Vol (). SetMute (wartość, System. Guid. Pusty)); } } } „@ -Verbose While ($ true) { # Wyczyść wszystkie zdarzenia w bieżącej sesji, ponieważ są one w nieskończonej pętli, aby rozpocząć od nowa po rozpoczęciu pętli. Wydarzenie | Remove-Event -ErrorAction SilentlyContinue #Rejestrowanie zdarzenia i oczekiwanie na wyzwolenie zdarzenia. Zarejestruj-WmiEvent -Class Win32_DeviceChangeEvent. Wait-Event -OutVariable Event | Out-Null $ EventType = $ Event.sourceargs.newevent | ` Sortuj obiekt TIME_CREATED -Descending | ` Select-Object EventType -ExpandProperty EventType -Pierwszy 1 # Warunkowa logika do obsługi, Kiedy wyciszyć / anulować wyciszenie maszyny za pomocą Audio API. Jeśli ($ EventType -eq 3) { [Audio]:: Mute = $ true. Pisanie pełne „Wyciszony [$ ((Get-Date) .tostring ())]” } elseif ($ EventType -eq 2 -i [Audio]:: Mute -eq $ true) { [Audio]:: Mute = $ false. Pełne zapisanie „UnMuted [$ ((Get-Date) .tostring ())]” } }
instagram viewer

Teraz musisz zapisać plik w formacie PS1. Kiedy patrzysz na okno dialogowe Zapisz plik, wybierz Wszystkie pliki z menu rozwijanego i wywołaj plik AutoMute.ps1. Nazwa samego pliku nie jest ważna, więc po prostu wybierz coś, co łatwo zapamiętać.

Aby aktywować skrypt, kliknij prawym przyciskiem myszy nowo utworzony plik i wybierz Biegać. Skrypt będzie aktywny do momentu wyłączenia komputera.

To tylko jeden z wielu sposobów PowerShell może zwiększyć wydajność Zwiększ produktywność dzięki skryptom Windows PowerShellCo jeśli mógłbyś przenieść produktywność Linuksa na Windows? Większość dystrybucji Linuksa jest dostarczana z potężną powłoką Bash. PowerShell to równie wydajny terminal dla systemu Windows. Czytaj więcej . Tam jest mnóstwo Polecenia cmdlet programu PowerShell, które poprawią działanie systemu Windows Polecenia cmdlet programu PowerShell, które poprawią Twoje umiejętności administracyjne w systemie WindowsPowershell to narzędzie wiersza polecenia i język skryptowy równych części. Daje to możliwość zautomatyzowania komputera za pomocą tych samych poleceń, których używasz do administrowania nim. Czytaj więcej .

Źródło obrazu: peus / Depositphotos

Dan to brytyjski emigrant mieszkający w Meksyku. Jest redaktorem naczelnym siostrzanej strony MUO, Blocks Decoded. W różnych okresach był redaktorem społecznym, kreatywnym i finansowym w MUO. Każdego roku można go spotkać w salonie wystawowym na targach CES w Las Vegas (ludzie PR, sięgnijcie!), A on robi wiele zakulisowych witryn…