Come disattivare automaticamente l'audio quando scollegate le cuffie su Windows

Come disattivare automaticamente l'audio quando scollegate le cuffie su Windows / finestre

Non sarebbe fantastico se si potesse disattivare automaticamente l'audio del computer ogni volta che si scollega la cuffia? Eviterebbe accidentalmente svegliare i tuoi coinquilini nelle prime ore del mattino, o rivelare per sbaglio il tuo amore per Britney Spears in pubblico.

Naturalmente, è possibile disattivare l'audio degli altoparlanti e delle cuffie caso per caso utilizzando il Mixer volume. (Ulteriori informazioni sulla personalizzazione dell'audio in Windows 10.) Ma onestamente, non è necessario farlo quando è possibile automatizzarlo con PowerShell.

Ecco come disattivare automaticamente l'audio del PC quando rimuovi le cuffie, proprio come fanno gli smartphone.

Per iniziare, apri Blocco note. Quindi, incolla il seguente codice nel documento vuoto:

[cmdletbinding ()] Param () #Aggiunta delle definizioni per l'accesso all'API audio Add-Type -TypeDefinition @ 'using System.Runtime.InteropServices; [Guid ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] interfaccia IAudioEndpointVolume // f (), g (), ... sono gli slot del metodo COM non utilizzati. Definiscili se ti interessa 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)] interfaccia IMMDevice int Activate (ref System.Guid id, int clsCtx, int activationParams, out IAudioEndpointVolume aev);  [Guid ("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] interfaccia IMMDeviceEnumerator int f (); // Non utilizzato int GetDefaultAudioEndpoint (int dataFlow, ruolo int, out IMMDevice endpoint);  [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] class MMDeviceEnumeratorComObject  public class Audio statico IAudioEndpointVolume Vol () var enumerator = new MMDeviceEnumeratorComObject () come 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 (value, System.Guid.Empty)); public bool statico Mute get bool mute; Marshal.ThrowExceptionForHR (Vol (). GetMute (out muto)); return mute;  set Marshal.ThrowExceptionForHR (Vol (). SetMute (value, System.Guid.Empty));  '@ -Verbose While ($ true) #Pulisce tutti gli eventi nella sessione corrente dal suo in un ciclo infinito, per fare un nuovo inizio quando il ciclo inizia Get-Event | Remove-Event -ErrorAction SilentlyContinue #Registrazione dell'evento e attesa dell'attivazione dell'evento 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 -First 1 # Logica condizionale da gestire, Quando attivare / disattivare l'audio della macchina utilizzando Audio API If ($ EventType -eq 3) [Audio] :: Mute = $ true Write-Verbose "Disattivato [$ ((Get-Date) .tostring ())] " elseif ($ EventType -eq 2 -and [Audio] :: Mute -eq $ true) [Audio] :: Muto = $ falso Write-Verbose" UnMuted [$ ((Get-Date) .tostring ())] "

Ora è necessario salvare il file nel formato PS1. Quando stai guardando la finestra di dialogo Salva file, seleziona Tutti i files dal menu a discesa e chiama il file AutoMute.ps1. Il nome del file stesso non è importante, quindi basta scegliere qualcosa che sia facile da ricordare.

Per attivare lo script, fare clic con il tasto destro del mouse sul file appena creato e selezionare Correre. Lo script sarà attivo finché non si spegne la macchina.

Questo è solo uno dei molti modi in cui PowerShell può incrementare la produttività Aumenta la produttività con Windows Gli script di PowerShell aumentano la produttività con Windows Script di PowerShell E se potessi portare la produttività di Linux a Windows? La maggior parte delle distribuzioni Linux viene fornita con la potente shell di Bash. PowerShell è un terminale altrettanto potente per Windows. Leggi di più . Ci sono molti cmdlet di PowerShell che miglioreranno l'esperienza di Windows Cmdlet di PowerShell che miglioreranno le tue abilità di amministrazione di Windows Cmdlet di PowerShell che miglioreranno le tue abilità di amministrazione di Windows Powershell è lo stesso strumento da riga di comando e linguaggio di scripting. Ti dà la possibilità di automatizzare il tuo computer tramite gli stessi comandi che usi per amministrarlo. Leggi di più .

Immagine di credito: peus / Depositphotos

Scopri di più su: cuffie, PowerShell, Windows Tricks.