Slik slår du automatisk av lyd når du kobler fra hodetelefoner på Windows
Ville det ikke vært bra hvis du automatisk kan dempe datamaskinens lydutgang når du kobler fra hodetelefonene dine? Det ville forhindre uhell å vekke flatmates i de små timene på morgenen, eller feilaktig avsløre kjærligheten til Britney Spears i offentligheten.
Selvfølgelig kan du dempe høyttalere og hodetelefoner fra tilfelle til sak ved hjelp av volummikseren. (Lær mer om å tilpasse lyd i Windows 10.) Men ærlig talt er det ikke nødvendig å gjøre det når du kan automatisere det med PowerShell.
Slik slår du automatisk av lyden til PCen når du fjerner hodetelefonene, slik som smarttelefoner gjør.
For å komme i gang, åpne Notisblokk. Deretter limer du inn følgende kode i det tomme dokumentet:
[cmdletbinding ()] Param () #Adding definitions for tilgang til Audio API Add-Type -TypeDefinition @ 'ved hjelp av System.Runtime.InteropServices; [Guid ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] grensesnittet IAudioEndpointVolume // f (), g (), ... er ubrukte COM-metodespor. Definer disse hvis du bryr deg 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)] grensesnitt IMMDevice int Aktiver (ref System.Guid id, int clsCtx, int activationParams, ut IAudioEndpointVolume aev); [Guid ("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] grensesnitt IMMDeviceEnumerator int f (); // Ubrukt int GetDefaultAudioEndpoint (int dataFlow, int rolle, ut IMMDevice endepunkt); [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] klasse MMDeviceEnumeratorComObject offentlig klasse Lyd statisk IAudioEndpointVolume Vol () var enumerator = ny MMDeviceEnumeratorComObject () som IMMDeviceEnumerator; IMMDevice dev = null; Marshal.ThrowExceptionForHR (enumerator.GetDefaultAudioEndpoint (/ * eRender * / 0, / * eMultimedia * / 1, ut dev)); IAudioEndpointVolume epv = null; var epvid = typeof (IAudioEndpointVolume) .GUID; Marshal.ThrowExceptionForHR (dev.Activate (ref epvid, / * CLSCTX_ALL * / 23, 0, ut epv)); returnere epv; statisk statisk flytvolum Volum get float v = -1; Marshal.ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (ut v)); returner v; sett Marshal.ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (verdi, System.Guid.Empty)) offentlig statisk bool Mute get bool mute; Marshal.ThrowExceptionForHR (Vol (). GetMute (ut mute)); gå tilbake mute; sett Marshal.ThrowExceptionForHR (Vol (). SetMute (verdi, System.Guid.Empty)); '@ -Verbose While ($ true) #Relg alle hendelser i den nåværende økten siden den er i en uendelig sløyfe, for å få en ny start når sløyfen begynner Get-Event | Remove-Event -ErrorAction SilentlyContinue #Registering hendelsen og ventende hendelsen utløses Register-WmiEvent -Class Win32_DeviceChangeEvent Wait-Event -OutVariable Event | Out-Null $ EventType = $ Event.sourceargs.newevent | 'Sorter-objekt TIME_CREATED -Sendende | 'Select-Object EventType -ExpandProperty EventType -First 1 #Kondensiell logikk for å håndtere, Når du skal dempe / unMute maskinen ved hjelp av Audio API Hvis ($ 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 ())] "
Nå må du lagre filen i PS1-formatet. Når du ser på dialogboksen Lagre fil, velger du Alle filer fra rullegardinmenyen og ring filen AutoMute.ps1. Navnet på selve filen er ikke viktig, så velg bare noe som er lett å huske.
For å aktivere skriptet, høyreklikk på den nylig opprettede filen og velg Løpe. Skriptet vil være aktivt til du slår av maskinen.
Dette er bare en av mange måter PowerShell kan øke produktiviteten din Øk produktiviteten din med Windows PowerShell-skript Øk produktiviteten din med Windows PowerShell-skript Hva om du kan bringe produktiviteten til Linux over til Windows? De fleste Linux distros kommer pakket med det kraftige Bash-skallet. PowerShell er en like kraftig terminal for Windows. Les mer . Det er mange PowerShell cmdlets som forbedrer Windows-opplevelsen Powershell Cmdlets som forbedrer Windows Admin Ferdigheter Powershell Cmdlets som vil forbedre Windows Admin Ferdigheter Powershell er like deler kommandolinjeverktøy og skriptspråk. Det gir deg muligheten til å automatisere datamaskinen din via de samme kommandoene du bruker til å administrere den. Les mer .
Bilde Kreditt: Peus / Depositphotos
Utforsk mer om: Hodetelefoner, PowerShell, Windows Tricks.