Så här stänger du av ljud automatiskt när du kopplar ur hörlurarna till Windows

Så här stänger du av ljud automatiskt när du kopplar ur hörlurarna till Windows / Windows

Skulle det inte vara bra om du automatiskt stänger av datorns ljudutgång när du kopplar ur hörlurarna? Det skulle förhindra oavsiktligt att vakna upp dina kompisar på de små timmarna på morgonen, eller felaktigt avslöja din kärlek till Britney Spears offentligt.

Naturligtvis kan du stänga av högtalare och hörlurar från fall till fall med hjälp av volymblandaren. (Läs mer om att anpassa ljud i Windows 10.) Men det är ingen anledning att göra det när du kan automatisera det med PowerShell.

Så här stänger du automatiskt av datorns ljud när du tar bort hörlurarna, precis som smartphones gör.

För att komma igång, öppna Anteckningsblock. Sedan klistra in följande kod i det tomma dokumentet:

[cmdletbinding ()] Param () #Adding definitioner för åtkomst till Audio API Add-Type -TypeDefinition @ 'med System.Runtime.InteropServices; [Guid ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] gränssnittet IAudioEndpointVolume // f (), g (), ... är oanvända COM-metoden slots. Definiera dessa om du bryr dig int f (); int g (); int h (); int i (); int SetMasterVolumeLevelScalar (float fLevel, System.Guid pguidEventContext); int j (); int GetMasterVolumeLevelScalar (ut float pfLevel); int k (); int l (); int m (); int n (); int SetMute ([MarshalAs (UnmanagedType.Bool)] bool bMute, System.Guid pguidEventContext); int GetMute (ut bool pbMute);  [Guid ("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] gränssnitt IMMDevice int Aktivera (ref System.Guid id, int clsCtx, int activationParams, ut IAudioEndpointVolume aev);  [Guid ("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] gränssnitt IMMDeviceEnumerator int f (); // Oanvänd int GetDefaultAudioEndpoint (int dataFlow, int roll, ut IMMDevice endpoint);  [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] klass MMDeviceEnumeratorComObject  offentlig klass Audio static IAudioEndpointVolume Vol () var enumerator = ny MMDeviceEnumeratorComObject () som IMMDeviceEnumerator; IMMDevice dev = null; Marshal.ThrowExceptionForHR (enumerator.GetDefaultAudioEndpoint (/ * eRender * / 0, / * eMultimedia * / 1, out dev)); IAudioEndpointVolume epv = null; var epvid = typof (IAudioEndpointVolume) .GUID; Marshal.ThrowExceptionForHR (dev.Activate (ref epvid, / * CLSCTX_ALL * / 23, 0, ut epv)); returnera epv;  offentliga statiska floatvolymen get float v = -1; Marshal.ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (ut v)); välj Marshal.ThrowExceptionForHR (Vol (). GetMute (out mute)); återvända dämpa;  sätta Marshal.ThrowExceptionForHR (Vol (). SetMute (värde, System.Guid.Empty));  '@ -Verbose While ($ true) #Clean alla händelser i den aktuella sessionen sedan den är i en oändlig loop, för att få en ny start när loop börjar Get-Event | Remove-Event -ErrorAction SilentlyContinue #Registering händelsen och väntar på händelsen utlöses Register-WmiEvent -Class Win32_DeviceChangeEvent Wait-Event -OutVariable Event | Out-Null $ EventType = $ Event.sourceargs.newevent | 'Sorter-objekt TIME_CREATED -Scending | 'Select-Object EventType -ExpandProperty EventType -ExtpandProperty EventType -First 1 #Conditionell logik för hantering, När du stänger av / stänger av maskinen med Audio API Om ($ EventType -eq 3) [Audio] :: Mute = $ true Write-Verbose "Muted [$ ((Get-Date) .tostring ())] " elseif ($ EventType -eq 2 -and [Audio] :: Mute -eq $ true) [Audio] :: Mute = $ false Write-Verbose" UnMuted [$ ((Get-Date) .tostring ())] "

Nu måste du spara filen i PS1-format. När du tittar på dialogrutan Spara fil väljer du Alla filer från rullgardinsmenyn och ring filen AutoMute.ps1. Namnet på själva filen är inte viktigt, så välj bara något som är lätt att komma ihåg.

För att aktivera manuset högerklickar du på den nyskapade filen och väljer Springa. Skriptet kommer att vara aktivt tills du stänger av din maskin.

Detta är bara ett av många sätt PowerShell kan öka din produktivitet Öka din produktivitet med Windows PowerShell-skript Förbättra produktiviteten med Windows PowerShell-skript Vad händer om du kan överföra produktiviteten till Linux till Windows? De flesta Linux distros kommer packade med det kraftfulla Bash-skalet. PowerShell är en lika kraftfull terminal för Windows. Läs mer . Det finns massor av PowerShell-cmdlets som förbättrar din Windows-upplevelse Powershell Cmdlets som kommer att förbättra dina Windows-administrativa färdigheter Powershell Cmdlets som kommer att förbättra dina Windows-administrativa färdigheter Powershell är lika delar kommandoradsverktyg och skriptspråk. Det ger dig möjligheten att automatisera din dator via samma kommandon som du använder för att administrera den. Läs mer .

Bildkrediter: peus / Depositphotos

Utforska mer om: Hörlurar, PowerShell, Windows Tricks.