SendMessage / SC_MONITORPOWER não ativará o monitor ao executar o Windows 8
Eu ligar e desligar meus monitores usando o seguinte código:
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MONITORPOWER = 0xF170;
private const int MonitorTurnOn = -1;
private const int MonitorShutoff = 2;
//Turn them off
SendMessage(f.Handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MonitorShutoff);
//Turn them on
SendMessage(f.Handle, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MonitorTurnOn);
Isso costumava funcionar como pretendido, mas depois de instalar o Windows 8 (Eu assumo que esta é a razão, já que vejo outros terem o mesmo problema) ligar a tela não funcionará. Ainda posso desativá-lo, mas não importa quantas vezes eu execute SendMessage () com MonitorTurnOn, ainda tenho que mover o mouse ou pressionar uma tecla para reativar os monitores.
Alguma sugestão sobre como fazer isso funcionar no Windows 8?