Jak automatycznie wyciszyć dźwięk podczas odłączania słuchawek w systemie Windows

  • Joseph Goodman
  • 0
  • 3653
  • 175
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 go zautomatyzować za pomocą programu PowerShell.

Oto jak automatycznie wyciszyć dźwięk 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 interfejsu API Audio Add-Type -TypeDefinition @ 'przy użyciu System.Runtime.InteropServices; [Guid („5CDF2C82-841E-4546-9722-0CF74078229A”), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] interfejs IAudioEndpointVolume // f (), g (),… są nieużywanymi gniazdami metod COM. Zdefiniuj je, jeśli zależy ci na int (); 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 (ref. System.Guid id, int clsCtx, int aktywacjaParamy, out IAumeEevpointol);  [Guid („A95664D2-9614-4F35-A746-DE8DB63617E6”), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] interfejs IMMDeviceEnumerator int f (); // Unused int GetDefaultAudioEndpoint (int dataFlow, int rola, out IMMDevice endpoint);  [ComImport, Guid („BCDE0395-E52F-467C-8E3D-C4579291692E”)] klasa MMDeviceEnumeratorComObject  public class Audio static IAudioEndpointVolume Vol () var enumerator = new MMDeviceEnumeratorComObjectice) jako IMM; 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)); zwraca epv;  public static float Volume get float v = -1; Marshal.ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (out v)); return v; set Marshal.ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (wartość, System.Guid.Empty)); public static bool Mute get bool mute; Marshal.ThrowExceptionForHR (Vol (). GetMute (out mute)); wyciszenie powrotu;  ustaw Marshal.ThrowExceptionForHR (Vol (). SetMute (wartość, System.Guid.Empty));  „@ -Verbose While ($ true) # Wyczyść wszystkie zdarzenia w bieżącej sesji, ponieważ jest ona w nieskończonej pętli, aby zacząć od nowa, gdy pętla zacznie się Get-Event | Remove-Event -ErrorAction SilentlyContinue #Rejestrowanie zdarzenia i oczekiwanie na uruchomienie zdarzenia Register-WmiEvent -Class Win32_DeviceChangeEvent Wait-Event -OutVariable Zdarzenie | 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 If ($ EventType -eq 3) [Audio] :: Mute = $ true Write-Verbose” Wyciszony [$ ((Get-Date) .tostring ())] " elseif ($ EventType -eq 2 -i [Audio] :: Mute -eq $ true) [Audio] :: Mute = $ false Write-Verbose” UnMuted [$ ((Get-Date) .tostring ())] "

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, w jaki PowerShell może zwiększyć wydajność Zwiększ produktywność za pomocą skryptów Windows PowerShell Zwiększ produktywność za pomocą skryptów Windows PowerShell Co zrobić, jeśli możesz 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. . Istnieje wiele poleceń cmdlet programu PowerShell, które poprawią działanie systemu Windows Polecenia cmdlet programu PowerShell, które poprawią umiejętności administratora systemu Windows Polecenia cmdlet programu PowerShell, które poprawią umiejętności administratora systemu Windows PowerShell 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. .

Źródło obrazu: peus / Depositphotos




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.