如何在 Windows 10 系統中執行應用程式時保持螢幕常亮

為了僅在特定應用程式運行時保持顯示器亮起,可以使用小型 PowerShell 包裝器,該包裝器會請求 Windows 保持顯示器亮起,啟動應用程序,等待其進程退出,然後清除請求。這樣可以避免更改活動電源計劃或猜測要恢復的超時值。此範例也要求 Windows 保持喚醒狀態,因為自動睡眠會關閉顯示器。

包裝器的作用

WindowsSetThreadExecutionState為必須避免空閒時關閉顯示器的應用程式提供了相應的機制。此機制ES_DISPLAY_REQUIRED會要求點亮顯示器,ES_SYSTEM_REQUIRED防止 Windows 進入睡眠狀態,並ES_CONTINUOUS保持請求直到清除。腳本會等待選定的進程,然後清除相關標誌finally。請參閱Microsoft 的 API 文件。

包裝器不會更改電源計劃逾時設置,其請求會在腳本執行完畢後結束。它無法覆蓋手動睡眠、筆記型電腦合蓋狀態或電池電量過低保護措施,也不會停用螢幕保護程式。保持 Windows 喚醒狀態會消耗更多電量,尤其是在使用電池供電時。

1. 找到應用程式的可執行檔。

請使用應用程式的實際路徑.exe,而不是「開始」功能表捷徑或文件。範例中使用的是記事本C:\Windows\System32\notepad.exe。對於其他程序,請開啟捷徑的「屬性」並複製「目標」;確認它指向應用程式的可執行檔。

對於單一實例應用程序,請先關閉現有實例。封裝程式只會等待它啟動的進程,因此如果啟動器將進程切換到舊窗口,則可能會過早退出。如果發生這種情況,請使用應用程式的長時間運行可執行檔。

2. 建立並儲存 PowerShell 腳本

打開記事本並貼上此腳本。它會啟動您提供的應用程式路徑,等待該進程關閉,然後清除 Windows 請求—即使啟動失敗。

param(
    [Parameter(Mandatory = $true)]
    [ValidateScript({ Test-Path -LiteralPath $_ -PathType Leaf })]
    [string]$AppPath
)

Add-Type -TypeDefinition @'
using System.Runtime.InteropServices;
public static class DisplayAwake {
    [DllImport("kernel32.dll", SetLastError = true)]
    public static extern uint SetThreadExecutionState(uint esFlags);
}
'@

$ES_CONTINUOUS = [uint32]2147483648
$ES_SYSTEM_REQUIRED = [uint32]1
$ES_DISPLAY_REQUIRED = [uint32]2
$flags = [uint32]($ES_CONTINUOUS -bor $ES_SYSTEM_REQUIRED -bor $ES_DISPLAY_REQUIRED)

try {
    $previousState = [DisplayAwake]::SetThreadExecutionState($flags)
    if ($previousState -eq 0) {
        throw "Windows did not accept the execution-state request."
    }
    $process = Start-Process -FilePath $AppPath -PassThru
    $process.WaitForExit()
}
finally {
    [void][DisplayAwake]::SetThreadExecutionState($ES_CONTINUOUS)
}

選擇「檔案」>「另存為」,將其儲存到諸如「.cpp」之類的簡單位置C:\Scripts\KeepDisplayAwake.ps1,並將「儲存類型」設為「所有檔案(*.*)」。請.ps1自行新增檔案副檔名;否則,記事本可能會自動新增.txt副檔名。如果對話方塊提供編碼選項,請使用 UTF-8 編碼。

在記事本「另存為」對話方塊中,將檔案名稱設為 KeepDisplayAwake.ps1,並選取所有檔案。
將輔助檔案儲存為 .ps1 副檔名,並選擇“所有檔案”,這樣記事本就不會新增 .txt 副檔名。

3. 透過包裝器運行應用程式

按Windows 鍵 + R開啟「執行」對話框,或開啟命令提示符,然後輸入以下命令。請將腳本位置和可執行檔路徑變更為與您的電腦相符的路徑。

powershell.exe -NoProfile -ExecutionPolicy Bypass -File "C:\Scripts\KeepDisplayAwake.ps1" -AppPath "C:\Windows\System32\notepad.exe"

-ExecutionPolicy Bypass此操作僅影響目前 PowerShell 流程,不會永久變更電腦策略。工作或學校策略仍可能阻止腳本運行。請僅運行您理解的程式碼,如果腳本被阻止,請遵守管理員的規則。

Windows PowerShell 執行 KeepDisplayAwake.ps1,並將記事本執行檔的路徑指定為 AppPath。
在 -AppPath 之後傳遞完整的可執行檔路徑;包含空格的路徑需要用引號括起來。

4. 確認請求以應用程式結束。

當啟動的進程處於開啟狀態時,PowerShell 會一直處於忙碌狀態。關閉應用程式即可返回命令提示字元;該finally程式碼區塊會清除請求。如果您先關閉 PowerShell,則請求會結束,但應用程式可能仍保持開啟。

測試方法是:讓應用程式保持運作狀態,超過您通常的螢幕關閉時間。如果螢幕關閉,請確認控制台仍在運行,路徑指向長時間運行的可執行文件,並且沒有手動休眠或託管策略覆蓋它。

記事本打開在 PowerShell 控制台旁邊,該控制台仍在執行 KeepDisplayAwake.ps1 命令。
輔助程式會一直與應用程式保持活動狀態;關閉應用程式會將控制權交還給 PowerShell。

單獨檢查螢幕保護程式設定

執行狀態請求不會停止螢幕保護程式。開啟「設定」>「個人化」>「鎖定螢幕」,然後選擇「螢幕保護程式設定」。將其設為「無」,或根據需要調整等待時間;如果您希望電腦在不活動後鎖定,請保留「恢復登入」選項。請參閱 Microsoft 的螢幕保護程式說明。

Windows 10 鎖定螢幕設置,螢幕保護程式設定對話方塊已打開,螢幕保護程式設定為「無」。
螢幕保護程式有自己的設置,即使在顯示請求處於活動狀態時也能顯示。

為什麼不使用舊的修改超時時間的批次檔呢?

powercfg /change monitor-timeout-ac此命令會變更目前電源方案的接通電源顯示器逾時時間(以分鐘為單位);它並非臨時應用程式請求。恢復猜測值可能會覆蓋使用者的實際設置,並且僅限交流電模式的命令不適用於電池模式。 Microsoft 在其powercfg 參考文件中同時記錄了交流電和直流電選項。使用此包裝器僅對單一應用程式會話生效,而要永久變更逾時時間,則需要修改 Windows 電源設定。

故障排除

  • 應用程式已打開,但螢幕仍處於休眠狀態:請確保 PowerShell 視窗仍被腳本佔用。如果腳本立即返回到命令提示符,則該執行檔可能是啟動器,在轉送請求後即退出。
  • PowerShell 提示應用程式路徑缺失:請檢查路徑拼字和引號-AppPath。包含空格的路徑必須用引號括起來。
  • Windows 會封鎖該腳本:請遵循裝置上的執行策略。請勿變更已託管的策略,也不要僅為此包裝器設定永久性的不受限制策略。
  • 螢幕保護程式仍然會啟動:請使用上面的「鎖定螢幕設定」單獨調整螢幕保護程式;API 要求不會停用它。

留下評論

使用 FotoSketcher 將照片轉換為繪畫、素描和卡通

使用 FotoSketcher 將照片轉換為繪畫、素描和卡通

使用 FotoSketcher Studio 將照片轉換成繪畫、鉛筆素描或卡通。學習如何選擇效果、調整預覽、保存作品。

使用音訊標識符詳細分析和識別音訊文件

使用音訊標識符詳細分析和識別音訊文件

了解音訊標識符揭示的位元率、編碼器和標籤訊息,其傳統工作流程如何運作,以及當前哪些工具可以檢查文件或識別歌曲。

我的照片索引:一款適用於 Windows 的開源照片管理器。

我的照片索引:一款適用於 Windows 的開源照片管理器。

My Photo Index 是一款舊版 Windows 相片目錄管理工具,用於標記、評分和瀏覽本機影像。請查看其文件功能、相容性限制以及一個維護良好的替代方案。

使用屬性變更器變更檔案和資料夾屬性、日期和時間

使用屬性變更器變更檔案和資料夾屬性、日期和時間

學習如何使用屬性變更器安全地編輯 Windows 檔案屬性和時間戳記、更新 JPEG EXIF 照片日期以及預覽批次變更。

如何在 Windows 10 中為每個顯示器設定不同的桌布

如何在 Windows 10 中為每個顯示器設定不同的桌布

為每個 Windows 10 顯示器設定單獨的壁紙,識別顯示器,調整影像適應度,並解決缺少顯示器選擇的問題。

pViewer:一款極簡圖像檢視器和漫畫閱讀器

pViewer:一款極簡圖像檢視器和漫畫閱讀器

了解 pViewer 的功能、照片和漫畫模式的工作原理、應該下載哪個 Windows 版本,以及舊版和重寫版之間的差異。

如何在 Windows 7 和 8 中使用快速鍵切換到下一個桌面背景

如何在 Windows 7 和 8 中使用快速鍵切換到下一個桌面背景

設定 Windows 7 或 8 投影片放映,建立一個小型 VBScript 快捷方式,並指派鍵盤熱鍵來切換到下一張桌布。

NeoDownloader:設定參數並從網站批量下載圖片

NeoDownloader:設定參數並從網站批量下載圖片

學習如何建立 NeoDownloader 專案、選擇爬取範圍、設定映像過濾器和目標位置,以及查看批次下載。

XnConvert:批次應用特效和轉換影像格式

XnConvert:批次應用特效和轉換影像格式

使用 XnConvert 可以批次套用特效、調整照片大小和轉換影像格式。選擇輸出設定、預覽編輯效果並保護您的原始文件。

使用 ManicTime 追蹤工作時間和電腦使用情況

使用 ManicTime 追蹤工作時間和電腦使用情況

了解 ManicTime 如何追蹤應用程式使用情況、活躍時間和空閒時間以及文檔,然後將您的活動歷史記錄轉換為專案標籤和時間表。