
我想在顯示器關閉時關閉聲音(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,文法高亮在哪裡!