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

  • Michael Fisher
  • 0
  • 3827
  • 640
Anuncio

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

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

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

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

[cmdletbinding ()] Param () #Adición de definiciones para acceder a la API de audio Add-Type -TypeDefinition @ 'usando System.Runtime.InteropServices; [Guid ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] interfaz IAudioEndpointVolume // f (), g (), ... son ranuras de método COM sin usar. Defínalos si te interesa 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 (fuera de bool pbMute);  [Guid ("D666063F-1587-4E43-81F1-B948E807363F"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] interfaz IMMDevice int Activate (ref System.Guid id, int clsCtx, int activaciónParams, out IAudioEndpointVolume a;  [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 IMMDeviceEnumerator; como 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 (ref epvid, / * CLSCTX_ALL * / 23, 0, out epv)); volver epv;  volumen flotante estático público 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 (fuera de silencio)); 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 ciclo infinito, para comenzar de nuevo cuando el ciclo comienza Get-Event | Remove-Event -ErrorAction SilentlyContinue #Registrar el evento y esperar que se active el evento Register-WmiEvent -Class Win32_DeviceChangeEvent Wait-Event -OutVariable Event | Out-Null $ EventType = $ Event.sourceargs.newevent | 'Ordenar-Objeto TIME_CREATED -Descendiente | 'Select-Object EventType -ExpandProperty EventType -Primero 1 #Lógica condicional a manejar, cuándo silenciar / activar el equipo con la API de audio If ($ EventType -eq 3) [Audio] :: Mute = $ true Write-Verbose "Muted [$ ((Get-Date) .tostring ())] " elseif ($ EventType -eq 2 -y [Audio] :: Mute -eq $ true) [Audio] :: Mute = $ false Write-Verbose" Sin silenciar [$ ((Get-Date) .tostring ())] "

Ahora necesita guardar el archivo en formato PS1. Cuando esté viendo el diálogo Guardar archivo, seleccione Todos los archivos desde el menú desplegable y llame al archivo AutoMute.ps1. El nombre del archivo en sí no es importante, así que solo elige 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 los scripts de Windows PowerShell Aumente su productividad con los scripts de Windows PowerShell ¿Qué pasaría si pudiera llevar la productividad de Linux a Windows? La mayoría de las distribuciones de Linux vienen empaquetadas con el poderoso shell Bash. PowerShell es un terminal igualmente poderoso para Windows. . Hay muchos cmdlets de PowerShell que mejorarán su experiencia de Windows Cmdlets de Powershell que mejorarán sus habilidades de administrador de Windows Cmdlets de Powershell que mejorarán sus habilidades de administrador de Windows Powershell es una herramienta de línea de comandos y lenguaje de secuencias de comandos en partes iguales. Le brinda la capacidad de automatizar su computadora a través de los mismos comandos que usa para administrarla. .

Haber de imagen: peus / Depositphotos




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.