¿Cómo despierto mis monitores de Windows una vez apagados por la configuración de energía?

StackOverflow https://stackoverflow.com/questions/332649

  •  22-07-2019
  •  | 
  •  

Pregunta

Entonces mi máquina Vista está configurada para apagar sus monitores después de 10 minutos. (Nota: la máquina no está suspendida ni hibernada)

Tengo una aplicación .Net ejecutándose, que necesita "despertar" el sistema a una hora especificada. Como humano, solo mueve el mouse o presiona una tecla. ¿Cómo hago esto programáticamente?

He intentado: programar programáticamente el cursor; utilizando " SendKeys " ;; e incluso pinchando CreateWaitableTimer para que se suspenda (aunque no esté suspendido) con la esperanza de que eso desencadene algo.

Idealmente, el código en C # sería excelente, pero la API correcta de Win sería suficiente.

Muchas gracias de antemano.

¿Fue útil?

Solución

Debería poder controlar la alimentación del monitor enviando mensajes de comando del sistema de la siguiente manera. Tenga en cuenta que esto se prueba en XP, Vista puede haber cambiado las cosas un poco, por lo que deberá probarlo y hacérnoslo saber.

Este código está en VB pero puede ver la llamada a la API Win32 que usa. Debe pasar un identificador de ventana a la función, por lo que su código necesitará una ventana creada para procesar el mensaje (simplemente páselo a la función de procesamiento de ventana predeterminada).

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top