顯示器關閉時如何關閉聲音?

顯示器關閉時如何關閉聲音?

我想在顯示器關閉時關閉聲音(Windows 10)。我目前的電源設定是 15 分鐘後關閉顯示器。我也想把聲音關掉。

我不確定是否有內建的 Windows 方法可以做到這一點,但如果有外部工具可以做到這一點,那也會有所幫助。

編輯:解決潛在的欺騙問題-僅 nircmd 並不能提供解決方案。如果我能找到一種方法在 15 分鐘無操作後觸發它,並在執行某些操作(例如顯示器電源設定)時觸發它重新打開,那麼這只是關閉聲音的一種方法。任務調度程序似乎沒有可以以這種方式充當計時器的觸發器。

答案1

好的,所以這是一個特定的噪音應用程序,我想在系統空閒(並且監視器關閉)時停止,但不希望系統進入睡眠狀態。我意識到我並不關心應用程式是否被殺死,所以我只是編寫了一個單行腳本來殺死它,並將其設定為任務調度程式中的空閒觸發器。無需特別終止該卷,也無需弄清楚如何檢測從空閒狀態的返回並恢復該卷。

奇怪的是,taskkill /im 不起作用,所以我不得不使用以下命令:

wmic process where name="application.exe" call terminate

答案2

打開控制面板並尋找聲音(或只需點擊開始並蒐索“更改系統聲音”),在“聲音”標籤下,在程式事件列表中尋找裝置連接和裝置斷開,然後從下面的下拉式選單中選擇“(沒有任何)”。

請注意,這樣做也會在您插入或拔出 USB、滑鼠等任何硬體時阻止 Windows 發出聲音。

答案3

我認為這可以相對容易地完成自動熱鍵

使用任務規劃程序,使用程式新增任務:C:\path\to\autohotkey.exe參數:"C:\...path\to\script.ahk"在您的帳戶下空閒時執行(僅當使用者登入時,取消選取 [ ] 如果計算機不再空閒則停止,腳本將自行取消靜音並退出):

script.ahk:

#NoEnv

SoundGet manually_muted,,MUTE
If (manually_muted = "Off") {
    currently_idle := A_TimeIdle
    SoundSet 1,,MUTE
    Loop
    {
        Sleep 1000
    } Until (A_TimeIdle < currently_idle)
    SoundSet 0,,MUTE
}
ExitApp

如果沒有任務計劃程序,請使用以下腳本(只需運行它,它將使用大約 4 MB 的 RAM 保持常駐):

#NoEnv
#NoTrayIcon
#Persistent
#SingleInstance force

TimeIdleToMute_ms := 15 * 60 * 1000 ; timeout in milliseconds

SetTimer MuteUntilIdleEnds, % TimeIdleToMute_ms

Exit

MuteUntilIdleEnds() {
    global TimeIdleToMute_ms
    static idlemuted := 0
    
    If (!idlemuted && A_TimeIdle > TimeIdleToMute_ms) {
        SoundGet manually_muted,,MUTE
        If (manually_muted = "Off") {
            idlemuted := A_TimeIdle
            SoundSet 1,,MUTE
            Loop
            {
                Sleep 1000 ; ms
            } Until (A_TimeIdle < idlemuted)
            SoundSet 0,,MUTE
            idlemuted := 0
        }
    }
}

這兩個腳本可能會被重寫以對 Windows 訊息做出反應而不是空閒循環,但即使現在資源消耗也可以忽略不計。

第二個腳本在沒有管理員權限的情況下執行時,可能無法偵測以管理員權限執行的應用程式的活動(儘管使用者有活動,但當它們聚焦時,它會在逾時後靜音)。但是,如果您偶爾將焦點切換到非管理程式直到逾時,則重置計時器就足夠了。此外,切換到非管理程式將結束靜音,因為腳本將偵測活動。

這兩個腳本都已編寫並快速測試答案,可能存在錯誤,請報告並注意:)

PS SE,文法高亮在哪裡!

相關內容