如果你能在拔下耳機的時候自動將電腦的音頻輸出靜音,那不是很好嗎?這樣可以避免在凌晨不小心吵醒你的室友,或者在公共場合錯誤地透露你對布蘭妮·斯皮爾斯的愛。
當然,您可以使用音量混音器將揚聲器和耳機逐個靜音。(瞭解有關在Windows10中自定義聲音的更多信息。)但老實說,如果可以使用PowerShell實現自動化,就沒有必要這麼做。
下面是如何在你摘下耳機時自動靜音你電腦的音頻,就像智能**一樣。
要開始,請打開記事本。然後,將下面的代碼粘貼到空白文檔中:
[cmdletbinding()]Param()#Adding definiti*** for accessing the Audio APIAdd-Type -TypeDefinition @'using System.Runtime.InteropServices;[Guid("5CDF2C82-841E-4546-9722-0CF74078229A"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]interface IAudioEndpointVolume {// f(), g(), ... are unused COM method slots. Define these if you careint 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)]interface IMMDevice {int Activate(ref System.Guid id, int clsCtx, int activationParams, out IAudioEndpointVolume aev);}[Guid("A95664D2-9614-4F35-A746-DE8DB63617E6"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]interface IMMDeviceEnumerator {int f(); // Unusedint GetDefaultAudioEndpoint(int dataFlow, int role, out IMMDevice endpoint);}[ComImport, Guid("BCDE0395-E52F-467C-8E3D-C4579291692E")] class MMDeviceEnumeratorComObject { }public class Audio {static IAudioEndpointVolume Vol() {var enumerator = new MMDeviceEnumeratorComObject() as 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));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)); return mute; }set { Marshal.ThrowExceptionForHR(Vol().SetMute(value, System.Guid.Empty)); }}}'@ -VerboseWhile($true){#Clean all events in the current session since its in a infinite loop, to make a fresh start when loop beginsGet-Event | Remove-Event -ErrorAction SilentlyContinue#Registering the Event and Waiting for event to be triggeredRegister-WmiEvent -Class Win32_DeviceChangeEventWait-Event -OutVariable Event |Out-Null$EventType = $Event.sourceargs.newevent | `Sort-Object TIME_CREATED -Descending | `Select-Object EventType -ExpandProperty EventType -First 1#Conditional logic to handle, When to Mute/unMute the machine using Audio APIIf($EventType -eq 3) {[Audio]::Mute = $trueWrite-Verbose "Muted [$((Get-Date).tostring())]"}elseif($EventType -eq 2 -and [Audio]::Mute -eq $true){[Audio]::Mute = $falseWrite-Verbose "UnMuted [$((Get-Date).tostring())]"}}現在需要將文件保存為PS1格式。當您看到保存文件對話框時,從下拉菜單中選擇所有文件並調用該文件自動靜音.ps1. 文件名本身並不重要,所以只需選擇一些容易記住的文件即可。
要激活腳本,右鍵單擊新創建的文件並選擇Run。腳本將一直處於活動狀態,直到您關閉計算機。
這只是PowerShell提高工作效率的眾多方法之一。有很多PowerShell cmdlet可以改善您的Windows體驗。
圖片來源:peus/照片
網際網路的禍害曾經是彈出式廣告。但現在,許多網站已經放棄了彈出式視窗,轉而使用更糟糕的方式:自動播放帶有聲音的影片。 ...
瀏覽器可以很容易地將各個選項卡上的站點靜音,這些選項卡在載入頁面時自動播放影片或音訊內容。如果您發現自己訪問了大量帶有侵入性自動播放影片的頁面,並且只想阻止它,這些工具可以提供幫助。 ...
...功能是自動停止和播放模式,這將暫停你的音樂時,你摘下耳機。重新開啟它們,音樂就會自動重啟。 ...
...彈出。當涉及到你的資料時,安全總比後悔好。 相關:如何在windows10上不再“安全地移除”USB驅動器
...閉網路攝像頭的影片並將麥克風中的音訊靜音。下面是你如何做到這一點,包括一些鍵盤快捷鍵,以加快事情。 如何關閉網路攝像頭影片 要在縮放通話中關閉影片,請單擊“縮放通話”視窗左下角附近工具欄上的“停止影片...
Oculus Quest是一款完全獨立的耳機。它沒有PC專用耳機的電線。然而,如果你想在PC上使用它來玩Steam VR遊戲,你需要特殊的軟體來實現無線連線。 oculus link的無線替代品 Oculus Link是將Quest用作Steam VR耳機的官方方式,它需要USB電纜...
...從表面上看,沒有明顯的理由缺乏音訊。本指南向您介紹如何修復Windows10中的聲音問題。 不幸的是,聲音問題可能很棘手。問題可能只存在於第三方軟體中,需要修補程式。問題也可能源於windows10本身或底層硬體。可能的修復...