Cómo silenciar automáticamente el audio al desconectar los auriculares en Windows

Cómo silenciar automáticamente el audio al desconectar los auriculares en Windows / Windows

¿No sería fantástico si pudiera silenciar automáticamente la salida de audio de su computadora cada vez que desenchufa sus auriculares? Evitaría despertar accidentalmente a tus compañeros de piso en las primeras horas de la mañana, o revelar erróneamente en público tu amor por Britney Spears..

Por supuesto, puede silenciar los altavoces y los auriculares caso por caso utilizando el Mezclador de volumen. (Obtenga más información sobre la personalización del sonido en Windows 10). Pero, honestamente, no es necesario hacerlo cuando puede automatizarlo con PowerShell..

Aquí se explica cómo silenciar automáticamente el audio de su PC cuando se quita los auriculares, como lo hacen los teléfonos inteligentes..

Para empezar, abre el Bloc de notas. Luego, pegue el siguiente código en el documento en blanco:

[cmdletbinding ()] Parámetro () # Agregar definiciones para acceder a la API de audio Add-Type -TypeDefinition @ 'mediante System.Runtime.InteropServices; [Guid ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] interfaz IAudioEndpointVolume // f (), g (), ... son ranuras de método COM no utilizadas. Definir estos si te importa 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)] interfaz IMMDevice int Activate (ref System.Guid id, int clsCtx, intctivParams, fuera de línea)  [Guid ("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] interfaz IMMDeviceEnumerator int f (); // Sin usar int GetDefaultAudioEndpoint (int dataFlow, int role, out IMMDevice endpoint);  [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] clase MMDeviceEnumeratorComObject  public class Audio static IAudioEndpointVolume Vol () var enumerator = nuevo MMDeviceEnumeratorComObject () como un elemento 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 (ref 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 (value, System.Guid.Empty)); public static bool Mute get bool mute; Marshal.ThrowExceptionForHR (Vol (). GetMute (out mute)); volver mudo  set Marshal.ThrowExceptionForHR (Vol (). SetMute (value, System.Guid.Empty));  '@ -Verbose While ($ true) # Limpie todos los eventos en la sesión actual ya que está en un bucle infinito, para comenzar de nuevo cuando comience el ciclo Get-Event | Remove-Event -ErrorAction SilentlyContinue #Registrando el evento y esperando que se active el evento 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 -Primero 1 # Lógica condicional a manejar, cuándo silenciar / deshabilitar la máquina usando la API de audio If ($ 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" No silenciado [$ ((Get-Date) .tostring ())] "

Ahora necesitas guardar el archivo en el formato PS1. Cuando esté viendo el diálogo Guardar archivo, seleccione Todos los archivos Desde el menú desplegable y llamar al archivo. AutoMute.ps1. El nombre del archivo en sí no es importante, así que simplemente elija algo que sea fácil de recordar.

Para activar el script, haga clic derecho en el archivo recién creado y seleccione correr. El script estará activo hasta que apague su máquina..

Esta es solo una de las muchas formas en que PowerShell puede aumentar su productividad. Aumente su productividad con Windows PowerShell Scripts Aumente su productividad con Windows PowerShell Scripts ¿Qué pasaría si pudiera llevar la productividad de Linux a Windows? La mayoría de las distribuciones de Linux vienen empaquetadas con el potente shell Bash. PowerShell es un terminal igualmente potente para Windows. Lee mas . Hay muchos cmdlets de PowerShell que mejorarán tu experiencia de Windows. Cmdlets de Powershell que mejorarán tus habilidades de administración de Windows Cmdlets de Powershell que mejorarán tus habilidades de administración de Windows Powershell es una herramienta de línea de comandos y lenguaje de scripts de partes iguales. Le brinda la capacidad de automatizar su computadora a través de los mismos comandos que usa para administrarla. Lee mas .

Crédito de la imagen: peus / Depositphotos

Explorar más sobre: ​​Auriculares, PowerShell, Trucos de Windows.