Вы должны иметь возможность контролировать питание монитора, отправляя системные системные сообщения следующим образом. Обратите внимание, что это тестировалось на XP, Vista, возможно, несколько изменила ситуацию, поэтому вам нужно протестировать его и сообщить нам.
Этот код находится в VB, но вы можете увидеть вызов Win32 API, который он использует. Вам нужно передать дескриптор окна функции, чтобы вашему коду понадобилось окно, созданное для обработки сообщения (просто передайте его функции обработки окна по умолчанию).
Const SC_MONITORPOWER As Integer = &HF170
Const WM_SYSCOMMAND As Short = &H112S
Private Function SendMessage(
ByVal Handle As Int32,
ByVal wMsg As Int32,
ByVal wParam As Int32,
ByVal lParam As Int32) As Int32
End Function
Sub MonStandBy(hWnd as Int32)
SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, 1)
End Sub
Sub MonOff(hWnd as Int32)
SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, 2)
End Sub
Sub MonOn(hWnd as Int32)
SendMessage(hWnd, WM_SYSCOMMAND, SC_MONITORPOWER, -1)
End Sub