Comment couper automatiquement le son lorsque les écouteurs sont débranchés sous Windows 10

click fraud protection

Windows 10 peut conserver des profils audio distincts pour différents périphériques audio. Pour chaque périphérique audio que vous connectez, vous pouvez définir un niveau de volume différent et lorsque le périphérique est connecté, le volume s'ajuste automatiquement. Bien sûr, personne ne garde un appareil audio en sourdine tout le temps. Ils augmenteront ou diminueront le volume mais personne ne coupe habituellement un appareil audio.

Si vous utilisez une paire d'écouteurs avec votre bureau et devez souvent les déconnecter, vous pouvez utiliser un petit script PowerShell qui coupe automatiquement le son lorsque vous débranchez votre casque.

C'est quelque chose que font les téléphones portables, c'est-à-dire que lorsque vous débranchez votre casque, la musique s'arrête automatiquement. La logique derrière cela est que vous avez fini d'écouter de la musique ou que vous avez accidentellement retiré vos écouteurs et que vous avez besoin d'un moyen rapide de le désactiver. Le script a été essentiellement écrit sur ce même principe par Prateek Singh de GEEKEEFY.

instagram viewer

Couper automatiquement le son

Ouvrez le Bloc-notes et collez ce qui suit;

[cmdletbinding ()] Param () # Ajout de définitions pour accéder à l'API audio. Add-Type -TypeDefinition @ ' en utilisant le système. Durée. InteropServices; [Guid ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] interface IAudioEndpointVolume { // f (), g (),... sont des emplacements de méthode COM inutilisés. Définissez-les si vous vous en souciez. 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 Activer (réf System. Guid id, int clsCtx, int activationParams, out IAudioEndpointVolume aev); } [Guid ("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] interface IMMDeviceEnumerator { int f (); // Inutilisé. int GetDefaultAudioEndpoint (int dataFlow, rôle int, point de terminaison IMMDevice); } [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] classe MMDeviceEnumeratorComObject {} public class Audio { static IAudioEndpointVolume Vol () { var enumerator = new MMDeviceEnumeratorComObject () as IMMDeviceEnumerator; IMMDevice dev = null; Maréchal. ThrowExceptionForHR (énumérateur. GetDefaultAudioEndpoint (/ * eRender * / 0, / * eMultimedia * / 1, out dev)); IAudioEndpointVolume epv = null; var epvid = typeof (IAudioEndpointVolume) .GUID; Maréchal. ThrowExceptionForHR (dev. Activer (ref epvid, / * CLSCTX_ALL * / 23, 0, out epv)); return epv; } float statique public Volume { get {float v = -1; Maréchal. ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (out v)); return v;} set {Marshal. ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (valeur, System. Guid. Vide));} } boost statique public Muet { get {bool mute; Maréchal. ThrowExceptionForHR (Vol (). GetMute (out mute)); retour muet; } set {Marshal. ThrowExceptionForHR (Vol (). SetMute (valeur, System. Guid. Vide)); } } } '@ -Verbose While ($ true) { #Nettoyez tous les événements de la session en cours depuis sa dans une boucle infinie, pour prendre un nouveau départ lorsque la boucle commence. Get-Event | Remove-Event -ErrorAction SilentlyContinue #Enregistrement de l'événement et en attente de déclenchement de l'événement. 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 # Logique conditionnelle à gérer, Quand mettre en sourdine / réactiver la machine à l'aide de l'API audio. If ($ EventType -eq 3) { [Audio]:: Mute = $ true. Write-Verbose "Muted [$ ((Get-Date) .tostring ())]" } elseif ($ EventType -eq 2 -et [Audio]:: Mute -eq $ true) { [Audio]:: Muet = $ faux. Write-Verbose "UnMuted [$ ((Get-Date) .tostring ())]" } }

Enregistrez-le avec l'extension de fichier PS1. Assurez-vous de sélectionner "Tous les fichiers" dans la liste déroulante des types de fichiers. Donnez au fichier un nom qui vous dira d'un coup d'œil ce qu'il fait. Enregistrez-le dans un endroit où vous ne risquez pas de le supprimer par accident, mais aussi où vous pouvez le trouver facilement si vous en avez besoin.

Exécuter le script

PowerShell ne peut pas simplement exécuter automatiquement un script. Il existe une mesure de sécurité intégrée qui l'empêche de le faire, mais il existe un moyen de la contourner. Nous avons un article détaillé sur la façon dont vous pouvez le faire. Suivez les instructions pour exécuter automatiquement le script PowerShell vous venez de créer et utilisez une tâche planifiée pour démarrer le script à chaque démarrage de votre PC.

Alternativement, vous pouvez exécuter manuellement le script lorsque vous démarrez votre système. Je l'utilise depuis moins de 30 minutes et je ne sais pas comment je vivais sans auparavant.

watch instagram story