Annuncio pubblicitario
Non sarebbe bello se potessi silenziare automaticamente l'uscita audio del tuo computer ogni volta che scolleghi le cuffie? Impedirebbe di svegliare accidentalmente i tuoi coinquilini nelle piccole ore del mattino o di rivelare erroneamente il tuo amore per Britney Spears in pubblico.
Ovviamente, puoi disattivare gli altoparlanti e le cuffie caso per caso utilizzando il Mixer volume. (Ulteriori informazioni sulla personalizzazione dell'audio in Windows 10.) Onestamente, non è necessario farlo quando è possibile automatizzarlo con PowerShell.
Ecco come disattivare automaticamente l'audio del tuo 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 di definizioni per l'accesso all'API audio. Add-Type -TypeDefinition @ ' utilizzando il sistema. Runtime. InteropServices; [Guid ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] interfaccia IAudioEndpointVolume { // f (), g (),... sono 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, Sistema. Guid pguidEventContext); int GetMute (out bool pbMute); } [Guid ("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] interfaccia IMMDevice { int Attiva (ref System. ID guida, int clsCtx, int ActivParams, out IAudioEndpointVolume aev); } [Guid ("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] interfaccia IMMDeviceEnumerator { int f (); // Non utilizzato. int GetDefaultAudioEndpoint (int dataFlow, int role, out IMMDevice endpoint); } [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] classe MMDeviceEnumeratorComObject {} public class Audio { static IAudioEndpointVolume Vol () { var enumerator = new MMDeviceEnumeratorComObject () come IMMDeviceEnumerator; IMMDevice dev = null; Maresciallo. ThrowExceptionForHR (enumerator. GetDefaultAudioEndpoint (/ * eRender * / 0, / * eMultimedia * / 1, out dev)); IAudioEndpointVolume epv = null; var epvid = typeof (IAudioEndpointVolume) .GUID; Maresciallo. ThrowExceptionForHR (dev. Attiva (ref epvid, / * CLSCTX_ALL * / 23, 0, out epv)); ritorno epv; } float statico pubblico Volume { get {float v = -1; Maresciallo. ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (out v)); return v;} set {Maresciallo. ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (valore, Sistema. GUID. Vuoto));} } public static bool Mute { get {bool mute; Maresciallo. ThrowExceptionForHR (Vol (). GetMute (out mute)); muto di ritorno; } set {Maresciallo. ThrowExceptionForHR (Vol (). SetMute (value, System. GUID. Vuoto)); } } } '@ -Verbose While ($ true) { # Pulisci tutti gli eventi nella sessione corrente poiché si trova in un ciclo infinito, per ricominciare da capo all'inizio del ciclo. Get-Event | Remove-Event -ErrorAction SilentlyContinue #Registrazione dell'evento e in attesa dell'attivazione dell'evento. Register-WmiEvent -Class Win32_DeviceChangeEvent. Wait-Event -OutVariable Event | Out-Null $ EventType = $ Event.sourceargs.newevent | ` Ordinamento-oggetto TIME_CREATED -Descending | ` Select-Object EventType -ExpandProperty EventType -First 1 # Logica condizionale da gestire, Quando attivare / disattivare l'audio della macchina tramite API audio. If ($ EventType -eq 3) { [Audio]:: Mute = $ true. Write-Verbose "Disattivato [$ ((Get-Date) .tostring ())]" } elseif ($ EventType -eq 2 -e [Audio]:: Mute -eq $ true) { [Audio]:: Mute = $ false. Write-Verbose "UnMuted [$ ((Get-Date) .tostring ())]" } }
Ora devi 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 fino allo spegnimento del computer.
Questo è solo uno dei tanti modi PowerShell può aumentare la produttività Aumenta la tua produttività con gli script di Windows PowerShellE se potessi portare la produttività di Linux su Windows? La maggior parte delle distribuzioni Linux viene fornita con la potente shell Bash. PowerShell è un terminale altrettanto potente per Windows. Leggi di più . Ci sono molti Cmdlet di PowerShell che miglioreranno la tua esperienza con Windows Cmdlet Powershell che miglioreranno le tue capacità di amministratore di WindowsPowershell è lo strumento da riga di comando e il linguaggio di scripting in parti uguali. Ti dà la possibilità di automatizzare il tuo computer tramite gli stessi comandi che usi per amministrarlo. Leggi di più .
Credito di immagine: peus / Depositphotos
Dan è un espatriato britannico che vive in Messico. È caporedattore del sito gemello di MUO, Blocks Decoded. In varie occasioni è stato Social Editor, Creative Editor e Finance Editor per MUO. Lo puoi trovare in giro per la sala d'esibizione al CES di Las Vegas ogni anno (gente delle PR, contattaci!), E fa un sacco di siti dietro le quinte...