V
verbbis
Guest
After upgrading to Windows 10, version 2004, the screen on my desktop no longer turns off after a set period on inactivity. This worked just fine before.
It does not matter which power plan I've selected (currently 'High Performance' - but this setting should not have any effect on the display turning off), nor the amount of delay I've the defined in the 'Power & sleep' settings.
If I set the whole computer to sleep, this works and the display is turned off as well. So there is no problem with the suspend/sleep itself. It is only the display turning off which does not work.
Executing this PowerShell script turns off the display, but it immediately turns back on:
# Turn display off by calling WindowsAPI.
# SendMessage(HWND_BROADCAST,WM_SYSCOMMAND, SC_MONITORPOWER, POWER_OFF)
# HWND_BROADCAST 0xffff
# WM_SYSCOMMAND 0x0112
# SC_MONITORPOWER 0xf170
# POWER_OFF 0x0002
Add-Type -TypeDefinition '
using System;
using System.Runtime.InteropServices;
namespace Utilities {
public static class Display
{
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(
IntPtr hWnd,
UInt32 Msg,
IntPtr wParam,
IntPtr lParam
);
public static void PowerOff ()
{
SendMessage(
(IntPtr)0xffff, // HWND_BROADCAST
0x0112, // WM_SYSCOMMAND
(IntPtr)0xf170, // SC_MONITORPOWER
(IntPtr)0x0002 // POWER_OFF
);
}
}
}
'
On Linux, running
xset dpms force off
works as expected and the display does not turn back on until activity, so it is not a hardware issue.
How do I troubleshoot this on Windows? How can I see which process turns on the display? The 'Power troubleshooter' is useless. And so is the 'powercfg' utility - as I cannot see anything related to the display specifically in it. As I describe above, 'sleep/suspend' works, 'turning off the display' does not. And yes, I have the latest drivers installed.
Continue reading...
It does not matter which power plan I've selected (currently 'High Performance' - but this setting should not have any effect on the display turning off), nor the amount of delay I've the defined in the 'Power & sleep' settings.
If I set the whole computer to sleep, this works and the display is turned off as well. So there is no problem with the suspend/sleep itself. It is only the display turning off which does not work.
Executing this PowerShell script turns off the display, but it immediately turns back on:
# Turn display off by calling WindowsAPI.
# SendMessage(HWND_BROADCAST,WM_SYSCOMMAND, SC_MONITORPOWER, POWER_OFF)
# HWND_BROADCAST 0xffff
# WM_SYSCOMMAND 0x0112
# SC_MONITORPOWER 0xf170
# POWER_OFF 0x0002
Add-Type -TypeDefinition '
using System;
using System.Runtime.InteropServices;
namespace Utilities {
public static class Display
{
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(
IntPtr hWnd,
UInt32 Msg,
IntPtr wParam,
IntPtr lParam
);
public static void PowerOff ()
{
SendMessage(
(IntPtr)0xffff, // HWND_BROADCAST
0x0112, // WM_SYSCOMMAND
(IntPtr)0xf170, // SC_MONITORPOWER
(IntPtr)0x0002 // POWER_OFF
);
}
}
}
'
On Linux, running
xset dpms force off
works as expected and the display does not turn back on until activity, so it is not a hardware issue.
How do I troubleshoot this on Windows? How can I see which process turns on the display? The 'Power troubleshooter' is useless. And so is the 'powercfg' utility - as I cannot see anything related to the display specifically in it. As I describe above, 'sleep/suspend' works, 'turning off the display' does not. And yes, I have the latest drivers installed.
Continue reading...