Я включаю и выключаю свои мониторы, используя следующий код:
[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);
Это работало по назначению, но после установки Windows 8 (Я предполагаю, что это причина, так как я вижу, что другие имеют ту же проблему) включение экрана не будет работать. Я все еще могу отключить его, но независимо от того, сколько раз я запускаю SendMessage() с помощью MonitorTurnOn, мне все равно нужно переместить мышь или нажать клавишу, чтобы снова включить мониторы.
Любые предложения о том, как сделать эту работу в Windows 8?