Comment couper automatiquement le son lorsque vous débranchez le casque sous Windows
Ne serait-il pas formidable de pouvoir désactiver automatiquement la sortie audio de votre ordinateur chaque fois que vous débranchez vos écouteurs? Cela éviterait de réveiller accidentellement vos colocataires aux petites heures du matin ou de révéler par erreur votre amour pour Britney Spears en public..
Bien entendu, vous pouvez désactiver les haut-parleurs et le casque au cas par cas à l'aide du mélangeur de volume. (En savoir plus sur la personnalisation du son dans Windows 10.) Mais honnêtement, inutile de le faire lorsque vous pouvez l’automatiser avec PowerShell..
Voici comment désactiver automatiquement le son de votre ordinateur lorsque vous retirez le casque, comme le font les smartphones.
Pour commencer, ouvrez le Bloc-notes. Ensuite, collez le code suivant dans le document vierge:
[cmdletbinding ()] Param () #Ajout de définitions pour accéder à l'API audio Add-Type -TypeDefinition @ 'using System.Runtime.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 (pfLevel); int k (); int l (); int m (); int n (); int SetMute ([MarshalAs (UnmanagedType.Bool)] bool bMute, System.Guid pguidEventContext); int GetMute (hors bool pbMute); [Guid ("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] interface IMMDevice int Activation (réf System.Guid id, int clsCtx, int activationParams, out IAVarpoint, valeur) [Guid ("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] interface IMMDeviceEnumerator int f (); // int inutilisé GetDefaultAudioEndpoint (int dataFlow, int rôle, out point de terminaison IMMDevice); [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] classe MMDeviceEnumeratorComObject classe publique Audio static IAudioEndpointVolume Vol () var énumérateur = nouveau MMDeviceEnumeratorComObject) en tant que élément de base IMMDevice dev = null; Marshal.ThrowExceptionForHR (énumérateur.GetDefaultAudioEndpoint (/ * eRender * / 0, / * eMultimedia * / 1, out dev)); IAudioEndpointVolume epv = null; var epvid = typeof (IAudioEndpointVolume) .GUID; Marshal.ThrowExceptionForHR (dev.Activate (réf epvid, / * CLSCTX_ALL * / 23, 0, out epv)); return epv; public static float Volume get float v = -1; Marshal.ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (out v)); return v; set Marshal.ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (valeur, System.Guid.Empty)); public static bool Mute get bool mute; Marshal.ThrowExceptionForHR (Vol (). GetMute (out mute)); retourne muet; set Marshal.ThrowExceptionForHR (Vol (). SetMute (valeur, System.Guid.Empty)); '@ -Verbose While ($ true) #Nettoyer tous les événements de la session en cours depuis qu'elle est dans une boucle infinie, pour faire un nouveau départ quand la boucle commence Get-Event | Remove-Event -ErrorAction SilentlyContinue #Enregistrement de l'événement et attente de l'événement à déclencher Register-WmiEvent -Class Win32_DeviceChangeEvent Wait-Event -OutVariable Evénement | Out-Null $ EventType = $ Event.sourceargs.newevent | 'Sort-Object TIME_CREATED -Descending | 'Select-Object EventType -ExpandProperty EventType -First 1 # Logique conditionnelle à manipuler, quand mettre en / hors fonction la machine en utilisant l'API audio Si ($ EventType -eq 3) [Audio] :: Mute = $ true Write-Verbose "mis en sourdine [$ ((Get-Date) .tostring ())] " elseif ($ EventType -eq 2 -et [Audio] :: Mute -eq $ true) [Audio] :: Mute = $ false Write-Verbose" UnMuted [$ ((Get-Date) .tostring ())] "
Maintenant, vous devez enregistrer le fichier au format PS1. Dans la boîte de dialogue Enregistrer le fichier, sélectionnez Tous les fichiers dans le menu déroulant et appeler le fichier AutoMute.ps1. Le nom du fichier lui-même n'est pas important, alors choisissez simplement quelque chose qui est facile à mémoriser.
Pour activer le script, cliquez avec le bouton droit sur le fichier nouvellement créé et sélectionnez Courir. Le script sera actif jusqu'à ce que vous éteigniez votre machine.
Ceci est l’un des nombreux moyens par lesquels PowerShell peut augmenter votre productivité. Augmenter votre productivité avec les scripts Windows PowerShell. Augmenter votre productivité avec les scripts Windows PowerShell. Et si vous pouviez transférer la productivité de Linux à Windows? La plupart des distributions Linux sont livrées avec le puissant shell Bash. PowerShell est un terminal tout aussi puissant pour Windows. Lire la suite . Il existe de nombreuses cmdlets PowerShell qui amélioreront votre expérience Windows. Cmdlets Powershell qui amélioreront vos compétences d'administrateur Windows Cmdlets Powershell qui amélioreront vos compétences d'Administrateur Windows Powershell est un outil de ligne de commande et un langage de script équivalents. Il vous donne la possibilité d'automatiser votre ordinateur via les mêmes commandes que vous utilisez pour l'administrer. Lire la suite .
Crédit d'image: peus / Depositphotos
En savoir plus sur: Ecouteurs, PowerShell, Astuces Windows.