Windows 10 kann separate Audioprofile für verschiedene Audiogeräte verwalten. Sie können für jedes Audiogerät, das Sie anschließen, einen anderen Lautstärkepegel einstellen. Wenn das Gerät angeschlossen ist, wird die Lautstärke automatisch angepasst. Natürlich hält niemand ein Audiogerät die ganze Zeit stumm. Sie erhöhen oder verringern die Lautstärke, aber niemand schaltet ein Audiogerät stumm. Wenn Sie mit Ihrem Desktop einen Kopfhörer verwenden und diese häufig trennen müssen, können Sie ein kleines PowerShell-Skript verwenden, das den Ton automatisch stummschaltet, wenn Sie den Kopfhörer vom Computer trennen.

Dies ist ein Vorgang, den Mobiltelefone ausführen, d. H. Wenn Sie den Kopfhörer vom Computer trennen, stoppt die Musik automatisch. Die Logik dahinter ist, dass Sie entweder Musik gehört haben, oder Sie haben versehentlich den Kopfhörer entfernt und Sie müssen ihn schnell abschalten. Das Skript wurde grundsätzlich von Prateek Singh von GEEKEEFY nach demselben Prinzip geschrieben.

Ton automatisch stummschalten

Öffnen Sie den Editor und fügen Sie Folgendes 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 "Managment"). 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 starten, wenn die Schleife Get-Event | beginnt Remove-Event -ErrorAction SilentlyContinue #Registering des Ereignisses und Warten auf das Auslösen des Ereignisses Registrieren-WmiEvent -Klasse Win32_DeviceChangeEvent Wait-Event -OutVariable Ereignis | 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 ())] "}}

Speichern Sie es mit der Dateiendung PS1. Stellen Sie sicher, dass Sie "All Files" aus dem Dropdown-Menü für den Dateityp auswählen. Geben Sie der Datei einen Namen, der auf einen Blick zeigt, was sie tut. Bewahren Sie sie an einem Ort auf, an dem Sie ihn wahrscheinlich nicht aus Versehen löschen möchten, aber auch, wenn Sie ihn leicht finden können.

Das Skript ausführen

PowerShell kann ein Skript nicht einfach automatisch ausführen. Es gibt eine integrierte Sicherheitsmaßnahme, die dies verhindert, aber es gibt einen Weg dahin. Wir haben einen ausführlichen Artikel darüber, wie Sie genau das tun können. Folgen Sie den Anweisungen, um das soeben erstellte PowerShell-Skript automatisch auszuführen, und starten Sie das Skript bei jedem geplanten Start mit einem geplanten Task.

Alternativ können Sie das Skript beim Booten des Systems manuell ausführen. Ich benutze es seit weniger als 30 Minuten und ich weiß nicht, wie ich vorher ohne es gelebt habe.

Arbeitete Für Sie: Robert Gaines & George Fleming | Möchten Sie Uns Kontaktieren?

Kommentare Auf Der Website: