Automatisches Stummschalten von Audio beim Entfernen des Kopfhörers unter Windows

Automatisches Stummschalten von Audio beim Entfernen des Kopfhörers unter Windows / Windows

Wäre es nicht toll, wenn Sie die Audioausgabe Ihres Computers automatisch stummschalten könnten, wenn Sie den Kopfhörer vom Computer trennen? Es würde verhindern, dass Sie in den frühen Morgenstunden versehentlich Ihre Mitbewohner aufwecken oder Ihre Liebe zu Britney Spears irrtümlich in der Öffentlichkeit offenlegen.

Natürlich können Sie Lautsprecher und Kopfhörer mit dem Lautstärkemixer von Fall zu Fall stummschalten. (Weitere Informationen zum Anpassen von Sound in Windows 10). Um ehrlich zu sein, müssen Sie dies jedoch nicht tun, wenn Sie ihn mit PowerShell automatisieren können.

So können Sie das Audio Ihres PCs automatisch stummschalten, wenn Sie die Kopfhörer entfernen, ähnlich wie bei Smartphones.

Öffnen Sie zunächst den Editor. Fügen Sie dann den folgenden Code in das leere Dokument ein:

[cmdletbinding ()] Param () # Hinzufügen von Definitionen für den Zugriff auf den Audio-API-Add-Type -TypeDefinition @ 'mithilfe von System.Runtime.InteropServices; [Guid ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] - Schnittstelle IAudioEndpointVolume // f (), g (), ... sind nicht verwendete COM-Methodensteckplätze. Definieren Sie diese, wenn Sie sich für int f () interessieren. 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)] Schnittstelle IMMDevice int Activate (Ref. System.Guid-ID, int clsCtx, int ActivationParams, out-Aktivierungsprogramm,  [Guid ("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType (ComInterfaceType.InterfaceIsIUnknown)] Schnittstelle IMMDeviceEnumerator int f (); // Nicht verwendet int GetDefaultAudioEndpoint (int dataFlow, int role, out IMMDevice-Endpunkt);  [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] Klasse MMDeviceEnumeratorComObject  öffentliche Klasse Audio statisch IAudioEndpointVolume Vol () var enumerator = neues MMDeviceEnumeratorComObject () als Managetermin. 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 (keine Stummschaltung)); Stummschaltung rückgängig machen;  set Marshal.ThrowExceptionForHR (Vol (). SetMute (Wert, System.Guid.Empty));  '@ -Verbose While ($ true) #Clean alle Ereignisse in der aktuellen Sitzung seit ihrer Endlosschleife, um einen Neustart zu beginnen, wenn die Schleife Get-Event | beginnt Remove-Event -ErrorAction SilentlyContinue #Registering des Ereignisses und Warten auf auszulassendes Ereignis 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 #Bedingte Logik, wann das Gerät mit Audio-API stummgeschaltet werden soll oder, wenn ($ EventType -eq 3) [Audio] :: Mute = $ true Write-Verbose "stummgeschaltet ist [$ ((Get-Date) .tostring ())] " elseif ($ EventType -eq 2 -und [Audio] :: Mute -eq $ true) [Audio] :: Mute = $ false Write-Verbose" UnMuted [$ ((Get-Date) .tostring ())] "

Nun müssen Sie die Datei im PS1-Format speichern. Wählen Sie im Dialogfeld "Datei speichern" die Option aus Alle Dateien aus dem Dropdown-Menü und rufen Sie die Datei auf AutoMute.ps1. Der Name der Datei selbst ist nicht wichtig. Wählen Sie einfach etwas aus, das Sie sich leicht merken können.

Um das Skript zu aktivieren, klicken Sie mit der rechten Maustaste auf die neu erstellte Datei und wählen Sie aus Lauf. Das Skript ist so lange aktiv, bis Sie Ihren Computer ausschalten.

Dies ist nur eine von vielen Möglichkeiten, mit denen PowerShell Ihre Produktivität steigern kann. Steigern Sie Ihre Produktivität mit Windows PowerShell-Skripts Steigern Sie Ihre Produktivität mit Windows PowerShell-Skripts. Was wäre, wenn Sie die Produktivität von Linux auf Windows übertragen könnten? Die meisten Linux-Distributionen werden mit der leistungsstarken Bash-Shell geliefert. PowerShell ist ein ebenso leistungsfähiges Terminal für Windows. Weiterlesen . Es gibt viele PowerShell-Cmdlets, die Ihre Windows-Erfahrung verbessern. PowerShell-Cmdlets, die Ihre Windows-Admin-Fähigkeiten verbessern. PowerShell-Cmdlets, die Ihre Windows-Admin-Fähigkeiten verbessern. PowerShell ist gleichermaßen Befehlszeilentool und Skriptsprache. Sie haben die Möglichkeit, Ihren Computer mit denselben Befehlen zu automatisieren, die Sie zur Verwaltung des Computers verwenden. Weiterlesen .

Gutschrift: peus / Depositphotos

Erfahren Sie mehr über: Kopfhörer, PowerShell, Windows Tricks.