reklama

Nebylo by skvělé, kdybyste mohli automaticky vypnout zvukový výstup počítače, kdykoli odpojíte sluchátka? Zabránilo by to náhodnému probuzení vašich spolubydlících v malých ranních hodinách nebo omylu odhalilo vaši lásku k Britney Spears na veřejnosti.

Reproduktory a sluchátka můžete samozřejmě ztlumit případ od případu pomocí směšovače hlasitosti. (Další informace o přizpůsobení zvuku v systému Windows 10.) Upřímně řečeno, není nutné to dělat, když to můžete zautomatizovat pomocí PowerShell.

Zde je návod, jak automaticky ztlumit zvuk počítače, když odpojíte sluchátka, podobně jako smartphony.

Nejprve otevřete Poznámkový blok. Poté vložte následující kód do prázdného dokumentu:

[cmdletbinding ()] Param () #Přidávání definic pro přístup k rozhraní Audio API. Add-Type -TypeDefinition @ ' pomocí systému. Runtime. InteropServices; [Guid ("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] rozhraní IAudioEndpointVolume { // f (), g (),... jsou nevyužité sloty metod COM. Definujte je, pokud vám záleží. 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)] rozhraní IMMDevice { int Activate (ref System. GUID id, int clsCtx, int ActivParams, out IAudioEndpointVolume aev); } [Guid ("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType (ComInterfaceType. InterfaceIsIUnknown)] rozhraní IMMDeviceEnumerator { int f (); // Nepoužito. int GetDefaultAudioEndpoint (int dataFlow, int role, out IMMDevice endpoint); } [ComImport, Guid ("BCDE0395-E52F-467C-8E3D-C4579291692E")] třída MMDeviceEnumeratorComObject {} veřejná třída Audio { static IAudioEndpointVolume Vol () { var enumerator = new MMDeviceEnumeratorComObject () jako IMMDeviceEnumerator; IMMDevice dev = null; Maršál. ThrowExceptionForHR (enumerator. GetDefaultAudioEndpoint (/ * eRender * / 0, / * eMultimedia * / 1, out dev)); IAudioEndpointVolume epv = null; var epvid = typeof (IAudioEndpointVolume) .GUID; Maršál. ThrowExceptionForHR (dev. Aktivovat (ref epvid, / * CLSCTX_ALL * / 23, 0, out epv)); návrat epv; } public static float Volume { get {float v = -1; Maršál. ThrowExceptionForHR (Vol (). GetMasterVolumeLevelScalar (out v)); návrat v;} set {maršál. ThrowExceptionForHR (Vol (). SetMasterVolumeLevelScalar (hodnota, System. Guid. Prázdný));} } public static bool Mute { get {bool mute; Maršál. ThrowExceptionForHR (Vol (). GetMute (out mute)); mute; } set {maršál. ThrowExceptionForHR (Vol (). SetMute (hodnota, System. Guid. Prázdný)); } } } '@ -Verze, zatímco ($ true) { # Vyčistěte všechny události v aktuální relaci od jeho nekonečné smyčky, abyste mohli začít znovu, když začne smyčka. Get-Event | Remove-Event -ErrorAction SilentlyContinue #Registration the Event a Čekání na spuštění události. 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 -První 1 #Podmínečná logika pro zpracování, kdy se má ztlumit / zrušit zvuk pomocí zvukového rozhraní API. If ($ EventType -eq 3) { [Audio]:: Mute = $ true. Napište podrobnou zprávu „Ignorováno [$ ((datum získání) .str. ())]“ } elseif ($ EventType -eq 2 - a [Audio]:: Mute -eq $ true) { [Audio]:: Mute = $ false. Napište podrobnou zprávu „UnMuted [$ ((Get-Date) .tostring ())]“ } }
instagram viewer

Nyní musíte soubor uložit ve formátu PS1. Když se díváte na dialogové okno Uložit soubor, vyberte Všechny soubory z rozbalovací nabídky a zavolejte soubor AutoMute.ps1. Název samotného souboru není důležitý, takže stačí vybrat něco, co je snadno zapamatovatelné.

Chcete-li skript aktivovat, klikněte pravým tlačítkem na nově vytvořený soubor a vyberte Běh. Skript bude aktivní, dokud stroj nevypnete.

To je jen jeden z mnoha způsobů PowerShell může zvýšit vaši produktivitu Zvyšte svou produktivitu pomocí skriptů Windows PowerShellCo kdybyste mohli přenést produktivitu Linuxu do Windows? Většina linuxových distribucí je dodávána s výkonným Bash shellem. PowerShell je stejně výkonný terminál pro Windows. Přečtěte si více . Je tam mnoho Rutiny PowerShell, které zlepší vaše prostředí Windows Powershell Cmdlets, které zlepší vaše Windows Admin dovednostiPowershell je nástroj příkazového řádku se stejnými částmi a skriptovací jazyk. To vám dává možnost automatizovat počítač pomocí stejných příkazů, které používáte pro jeho správu. Přečtěte si více .

Obrázek Kredit: peus / Depositphotos

Dan je britský expat žijící v Mexiku. Je šéfredaktorem sesterské stránky MUO Blocks Decoded. V různých dobách působil jako sociální redaktor, kreativní editor a finanční editor pro MUO. Najdete ho, jak každoročně putuje po výstavní ploše v CES v Las Vegas (PR lidé, oslovte!) A dělá spoustu pozadu…