Audio automatisch dempen bij het ontkoppelen van een hoofdtelefoon op Windows
Zou het niet geweldig zijn als je de audio-uitvoer van je computer automatisch zou dempen wanneer je je koptelefoon loskoppelt? Het zou voorkomen dat je in de kleine uurtjes van de ochtend per ongeluk je huisgenoten wakker maakt, of ten onrechte je liefde voor Britney Spears onthult in het openbaar.
Natuurlijk kunt u de luidsprekers en koptelefoons per geval dempen met behulp van de volumemixer. (Meer informatie over het aanpassen van geluid in Windows 10.) Maar eerlijk gezegd, het is niet nodig om dat te doen wanneer u het kunt automatiseren met PowerShell.
Hier leest u hoe u de audio van uw pc automatisch dempt wanneer u de hoofdtelefoon verwijdert, zoals smartphones dat doen.
Open Kladblok om aan de slag te gaan. Plak vervolgens de volgende code in het lege document:
[cmdletbinding ()] Param () # Definities toevoegen voor toegang tot het Audio API Add-Type -TypeDefinition @ 'met behulp van System.Runtime.InteropServices; [Guid ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] interface IAudioEndpointVolume // f (), g (), ... zijn ongebruikte COM-methodeslots. Definieer deze als u 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)] interface IMMDevice int Activate (ref. System.Guid id, int clsCtx, int activationParams, out IAudioEndpointVolume aev); [Guid ("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] interface IMMDeviceEnumerator int f (); // Ongebruikt int GetDefaultAudioEndpoint (int dataFlow, int role, out IMMDevice-eindpunt); [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] class MMDeviceEnumeratorComObject public class Audio static IAudioEndpointVolume Vol () var enumerator = new MMDeviceEnumeratorComObject () as 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)); terugkeer epv; public static float Volume get float v = -1; Marshal.ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (uit v)); return v; set Marshal.ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (value, System.Guid.Empty)); public static bool Mute get bool mute; Marshal.ThrowExceptionForHR (Vol (). GetMute (out mute)); terugkeer mute; set Marshal.ThrowExceptionForHR (Vol (). SetMute (waarde, System.Guid.Empty)); '@ -Verbose While ($ true) #Reinig alle gebeurtenissen in de huidige sessie omdat deze zich in een oneindige lus bevindt, om een nieuwe start te maken wanneer de lus begint Get-evenement | Remove-Event -ErrorAction SilentlyVerder doorgaan #Het evenement registreren en wachten tot het evenement wordt geactiveerd 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 #Conditionele logica om af te handelen, Wanneer moet u het apparaat dempen / het dempen opheffen met behulp van Audio API If ($ EventType -eq 3) [Audio] :: Mute = $ true Write-Volbose "Muted [$ ((Get-Date) .tostring ())] " elseif ($ EventType -eq 2 -and [Audio] :: Mute -eq $ true) [Audio] :: Mute = $ false Write-Verbose" UnMuted [$ (Get-Date) .tostring ())] "
Nu moet je het bestand opslaan in het PS1-formaat. Selecteer als u naar het dialoogvenster Bestand opslaan kijkt Alle bestanden in het vervolgkeuzemenu en bel het bestand AutoMute.ps1. De naam van het bestand zelf is niet belangrijk, dus kies gewoon iets dat gemakkelijk te onthouden is.
Als u het script wilt activeren, klikt u met de rechtermuisknop op het nieuw gemaakte bestand en selecteert u Rennen. Het script zal actief zijn totdat u uw machine uitschakelt.
Dit is slechts een van de vele manieren waarop PowerShell uw productiviteit kan verbeteren. Verhoog uw productiviteit met Windows PowerShell-scripts Verhoog uw productiviteit met Windows PowerShell-scripts Wat als u de productiviteit van Linux naar Windows zou kunnen brengen? De meeste Linux-distro's worden geleverd met de krachtige Bash-shell. PowerShell is een even krachtige terminal voor Windows. Lees verder . Er zijn veel PowerShell-cmdlets die uw Windows-ervaring verbeteren Powershell-cmdlets die uw Windows-beheerdersvaardigheden verbeteren Powershell-cmdlets die uw Windows-beheerdersvaardigheden verbeteren Powershell is gelijkwaardig opdrachtregelprogramma en scripttaal. Het geeft u de mogelijkheid om uw computer te automatiseren via dezelfde opdrachten die u gebruikt om het te beheren. Lees verder .
Afbeelding Krediet: peus / Depositphotos
Ontdek meer over: Koptelefoons, PowerShell, Windows Tricks.