Slik demper du lyden automatisk når hodetelefoner kobles fra Windows 10

click fraud protection

Windows 10 kan beholde separate lydprofiler for forskjellige lydenheter. For hver lydenhet som du kobler til, kan du stille et annet volumnivå, og når enheten er tilkoblet, justeres volumet automatisk. Selvfølgelig holder ingen lydenheten dempet hele tiden. De vil øke eller redusere volumet, men ingen demper en lydenhet.

Hvis du bruker et par hodetelefoner på skrivebordet ditt, og ofte må koble dem fra, kan du bruke et lite PowerShell-skript som automatisk vil dempe lyden når du kobler fra hodetelefonene.

Dette er noe mobiltelefoner gjør, dvs. når du kobler fra hodetelefonene, stopper musikken automatisk. Logikken bak dette er at du enten har hørt på musikk, eller at du ved et uhell har fjernet hodetelefonene dine, og at du trenger en rask måte å slå den av. Manuset ble i utgangspunktet skrevet på samme prinsipp av Prateek Singh av GEEKEEFY.

Demp lyd automatisk

Åpne Notisblokk og lim inn følgende;

[Cmdletbinding ()] Param () # Legger til definisjoner for tilgang til Audio API. Add-Type -TypeDefinition @ ' bruker System. Runtime. InteropServices; [Veiledning ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] grensesnitt 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 flyte pfLevel); int k (); int l (); int m (); int n (); int SetMute ([MarshalAs (UnmanagedType. Bool)] bool bMute, System. Guid pguidEventContext); int GetMute (ut bool pbMute); } [Veiledning ("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] grensesnitt IMMDevice { int Aktiver (ref System. Guid id, int clsCtx, int aktiveringParams, out IAudioEndpointVolume aev); } [Veiledning ("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] grensesnitt IMMDeviceEnumerator { int f (); // Ubrukt. int GetDefaultAudioEndpoint (int dataFlow, int role, out IMMDevice endpoint); } [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] klasse MMDeviceEnumeratorComObject {} offentlig klasse Audio { statisk IAudioEndpointVolume Vol () { var enumerator = new MMDeviceEnumeratorComObject () som IMMDeviceEnumerator; IMMDevice dev = null; Marshal. ThrowExceptionForHR (enumeratoren. GetDefaultAudioEndpoint (/ * eRender * / 0, / * eMultimedia * / 1, out dev)); IAudioEndpointVolume epv = null; var epvid = typeof (IAudioEndpointVolume) .GUID; Marshal. ThrowExceptionForHR (dev. Aktiver (ref epvid, / * CLSCTX_ALL * / 23, 0, out epv)); returnere epv; } offentlig statisk flytende volum { få {flyte v = -1; Marshal. ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (ut v)); return v;} sett {Marshal. ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (verdi, system. Guid. Tømme));} } offentlig statisk bool Demp { få {bool mute; Marshal. ThrowExceptionForHR (Vol (). GetMute (out mute)); return mute; } sett {Marshal. ThrowExceptionForHR (Vol (). SetMute (verdi, system. Guid. Tømme)); } } } '@ -Verbose While ($ true) { # Rens alle hendelser i den nåværende økten siden det er i en uendelig sløyfe, for å få en ny start når loop starter. Get-Event | Fjern-hendelse -ErrorAction SilentlyContinue #Registrering av hendelsen og venter på at hendelsen skal utløses. Register-WmiEvent -Class Win32_DeviceChangeEvent. Wait-Event -OutVariable Event | Out-Null $ EventType = $ Event.sourceargs.newevent | ` Sort-Object TIME_CREATED -Dending | ` Select-Object EventType -ExpandProperty EventType -First 1 # Betingelseslogikk å håndtere, Når du skal slå av / av Dempe maskinen ved hjelp av Audio API. If ($ EventType -ekv 3) { [Audio]:: Mute = $ true. Skriv-verbose "Dempet [$ ((Get-Date) .tostring ())]" } elseif ($ EventType -eq 2 -og [Audio]:: Mute -eq $ true) { [Audio]:: Mute = $ falsk. Skriv-verbose "UnMuted [$ ((Get-Date) .tostring ())]" } }
instagram viewer

Lagre den med PS1-filtypen. Forsikre deg om at du velger ‘Alle filer’ fra rullegardinmenyen for filtypen. Gi filen et navn som raskt kan fortelle deg hva den gjør. Lagre det et sted du sannsynligvis ikke vil slette det ved et uhell, men også der du lett kan finne det hvis du trenger det.

Kjører manuset

PowerShell kan ikke bare autorisere et skript. Det er et innebygd sikkerhetstiltak som forhindrer det i å gjøre det, men det er en vei rundt det. Vi har en detaljert artikkel om hvordan du kan gjøre akkurat det. Følg instruksjonene til kjør PowerShell-skriptet automatisk du nettopp opprettet, og bruker en planlagt oppgave for å starte skriptet hver gang du starter opp PCen.

Alternativt kan du kjøre skriptet manuelt når du starter opp systemet. Jeg har brukt det i mindre enn 30 minutter, og jeg vet ikke hvordan jeg levde uten det før.

watch instagram story