Accueil

Comment mettre automatiquement le son en sourdine lorsque vous débranchez le casque sous Windows

Added 2018-07-27


Ne seriez-vous 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 à tort votre amour pour Britney Spears en public.

Bien entendu, vous pouvez désactiver les haut-parleurs et les écouteurs au cas par cas à l'aide du mélangeur de volume. ( Comment personnaliser les sons sur Windows 10 (et où les télécharger) En savoir plus sur la personnalisation du son dans Windows 10 .) Mais honnêtement, il n’est pas nécessaire 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 y tenez
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 Activate (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 (); // non utilisé
int GetDefaultAudioEndpoint (int dataFlow, int rôle, out point de terminaison IMMDevice);
}
[ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] classe MMDeviceEnumeratorComObject {}
public class Audio {
statique IAudioEndpointVolume Vol () {
var enumerator = new MMDeviceEnumeratorComObject () en tant que IMMDeviceEnumerator;
IMMDevice dev = null;
Marshal.ThrowExceptionForHR (enumerator.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 float Volume {
get {float v = -1; Marshal.ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (out v)); retourne v;}
set {Marshal.ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (valeur, System.Guid.Empty));}
}
public statique 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)
{
#Clean tous les événements de la session en cours depuis sa boucle infinie, pour faire un nouveau départ lorsque 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 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 ou non la machine en sourdine à l'aide de l'API audio
Si ($ EventType -eq 3)
{
[Audio] :: Mute = $ true
Write-Verbose "Muted [$ ((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, choisissez donc quelque chose de facile à retenir.

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.

Crédit d'image: peus / Depositphotos






Nuage de tags

Choix de L'éditeur


Thomas Becket

Je suis un écrivain indépendant qui couvre la programmation et les logiciels.
Je suis étudiant en informatique et je m'intéresse à la programmation, aux logiciels et à la technologie
Gadgets technologiques et critiques 2019