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?

questionAnswers(4)

yourAnswerToTheQuestion