Advertentie

Zou het niet geweldig zijn als u de audio-uitvoer van uw computer automatisch kunt dempen wanneer u uw hoofdtelefoon loskoppelt? Het zou voorkomen dat u per ongeluk uw huisgenoten wakker maakt in de kleine uurtjes van de ochtend, of ten onrechte uw liefde voor Britney Spears in het openbaar onthult.

Natuurlijk kunt u luidsprekers en hoofdtelefoons van geval tot geval dempen met de volumemixer. (Lees meer over het aanpassen van geluid in Windows 10.) Maar eerlijk gezegd hoeft u dat niet te doen als u het kunt automatiseren met PowerShell.

Hier leest u hoe u het geluid van uw pc automatisch dempt wanneer u de hoofdtelefoon verwijdert, net zoals smartphones dat doen.

Open Kladblok om te beginnen. Plak vervolgens de volgende code in het lege document:

[cmdletbinding ()] Param () #Definities toevoegen voor toegang tot de Audio-API. Add-Type -TypeDefinition @ ' systeem gebruiken. Looptijd. InteropServices; [Guid ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] interface IAudioEndpointVolume { // f (), g (),... zijn ongebruikte COM-methode slots. Definieer deze als u erom geeft. int f (); int g (); int h (); int i (); int SetMasterVolumeLevelScalar (float fLevel, systeem. Guid pguidEventContext); int j (); int GetMasterVolumeLevelScalar (uit float pfLevel); int k (); int l (); int m (); int n (); int SetMute ([MarshalAs (UnmanagedType. Bool)] bool bMute, systeem. Guid pguidEventContext); int GetMute (uit bool pbMute); } [Guid ("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] interface IMMDevice { int Activate (ref Systeem. 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 endpoint); } [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] klasse MMDeviceEnumeratorComObject {} openbare klasse Audio { statische IAudioEndpointVolume Vol () { var enumerator = new MMDeviceEnumeratorComObject () als IMMDeviceEnumerator; IMMDevice dev = null; Maarschalk. ThrowExceptionForHR (teller. GetDefaultAudioEndpoint (/ * eRender * / 0, / * eMultimedia * / 1, uit dev)); IAudioEndpointVolume epv = null; var epvid = typeof (IAudioEndpointVolume) .GUID; Maarschalk. ThrowExceptionForHR (dev. Activeren (ref epvid, / * CLSCTX_ALL * / 23, 0, out epv)); terugkeer epv; } openbare statische vlotter Volume { krijg {float v = -1; Maarschalk. ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (uit v)); terugkeer v;} stel {Marshal in. ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (waarde, Systeem. Guid. Leeg));} } openbare statische bool Dempen { krijg {bool mute; Maarschalk. ThrowExceptionForHR (Vol (). GetMute (uit dempen)); terugkeer dempen; } stel {Marshal in. ThrowExceptionForHR (Vol (). SetMute (waarde, Systeem. Guid. Leeg)); } } } '@ -Verbose While ($ true) { #Schoon alle gebeurtenissen in de huidige sessie op omdat deze zich in een oneindige lus bevinden, om een ​​nieuwe start te maken wanneer de lus begint. Get-evenement | Remove-Event -ErrorAction SilentlyContinue #De gebeurtenis registreren en wachten tot de gebeurtenis wordt geactiveerd. Register-WmiEvent -Class Win32_DeviceChangeEvent. Wait-Event -OutVariable Event | Out-Null $ EventType = $ Event.sourceargs.newevent | ' Sort-Object TIME_CREATED -Aflopend | ' Select-Object EventType -ExpandProperty EventType -First 1 #Conditionele logica die moet worden afgehandeld, Wanneer moet de machine worden gedempt / gedempt met de Audio-API. If ($ EventType -eq 3) { [Audio]:: Mute = $ true. Schrijf-uitgebreid "Gedempt [$ ((Get-Date) .tostring ())]" } elseif ($ EventType -eq 2 -en [Audio]:: Mute -eq $ true) { [Audio]:: Mute = $ false. Schrijf-uitgebreid "Unmuted [$ ((Get-Date) .tostring ())]" } }
instagram viewer

Nu moet je het bestand opslaan in het PS1-formaat. Selecteer wanneer u naar het dialoogvenster Bestand opslaan kijkt Alle bestanden uit het dropdown menu en roep het bestand op AutoMute.ps1. De naam van het bestand zelf is niet belangrijk, dus kies gewoon iets dat gemakkelijk te onthouden is.

Om het script te activeren, klikt u met de rechtermuisknop op het nieuw gemaakte bestand en selecteert u Rennen. Het script blijft actief totdat u uw machine uitschakelt.

Dit is slechts een van de vele manieren PowerShell kan uw productiviteit verhogen Verhoog uw productiviteit met Windows PowerShell-scriptsWat als je de productiviteit van Linux naar Windows zou kunnen brengen? De meeste Linux-distributies worden geleverd met de krachtige Bash-shell. PowerShell is een even krachtige terminal voor Windows. Lees verder . Er zijn veel van PowerShell-cmdlets die uw Windows-ervaring zullen verbeteren Powershell-cmdlets die uw Windows-beheerdersvaardigheden zullen verbeterenPowershell is een opdrachtregelprogramma voor gelijke delen en scripttaal. Het geeft je de mogelijkheid om je computer te automatiseren met dezelfde commando's die je gebruikt om hem te beheren. Lees verder .

Afbeelding tegoed: peus / Depositphotos

Dan is een Britse expat die in Mexico woont. Hij is de hoofdredacteur van MUO's zustersite, Blocks Decoded. Op verschillende momenten was hij de Social Editor, Creative Editor en Finance Editor voor MUO. Je vindt hem elk jaar op de CES in Las Vegas (PR-mensen, neem contact op!)