邊做邊學,順便留個筆記,若有錯誤請不吝指教。
研究了很久,找到兩個比較簡單的方法:
方法一:call螢幕保護程式
"C:\Windows\System32\scrnsave.scr" /start
這個方式就是讓windows系統呼叫螢幕保護程式輸出一個黑畫面
實際上螢幕還是會微微的發亮(通常螢幕的背光模組不會關閉)
而喚醒的方式也很簡單,只要模擬使用者移動滑鼠即可:
rundll32 user32.dll,SetCursorPos
或是鍵盤輸入任意鍵(這裡是用Enter鍵):
powershell $myshell = New-Object -com "Wscript.Shell";$myshell.sendkeys("{ENTER}")
方法案:切斷訊號輸出:
透過直接 call power shell 直接切斷訊號輸出:
powershell (Add-Type '[DllImport(\"user32.dll\")]^public static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);' -Name a -Pas)::SendMessage(-1,0x0112,0xF170,2)
執行之後螢幕應該會變成無訊號
通常螢幕無訊號一段時間後會自行關閉背光模組(Backlight)
這樣就可以確實達到關閉螢幕的目的了
喚醒的部分有找到對應的做法是:
powershell (Add-Type '[DllImport(\"user32.dll\")]^public static extern int SendMessage(int hWnd, int hMsg, int wParam, int lParam);' -Name a -Pas)::SendMessage(-1,0x0112,0xF170,-1)
但在我的環境實際測試無法使用
故仍延續模擬使用者移動滑鼠或鍵盤輸入的方式喚醒。