2011-09-04 15 views
5

que quería ser capaz de Encender/apagar mis monitores de un guión Delphi, desde Windows XP a 7.¿Cómo encender/apagar el/los monitor (es)?

He buscado en la sección Delphi en y no he encontrado la respuesta.

También encontré muchas muestras que ya no funcionan en Windows 7 (solo con XP).

+1

Los primeros resultados de Google para "activar/desactivar mis monitores desde un script de Delphi" casi todo lista "yo tu "solución". – Mat

+0

Estoy de acuerdo Mat; Simplemente lo agregué porque no lo encontré en stackoverflow (y como he leído [esto] (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your -own-questions /)) ... – Whiler

+1

Mi ['TSystemState'] (http://specials.rejbrand.se/dev/classes/systemstate/readme.html) hace esto. –

Respuesta

8

que han probado con éxito esto en Windows XP y Windows 7:

const 
    MONITOR_ON  = -1; 
    MONITOR_OFF  = 2; 
    MONITOR_STANDBY = 1; 

Para apagar el monitor:

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF); 

Para encender el monitor:

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_ON); 
+0

Si sabes por qué se cuelga con la transmisión ... Intenté con Application.ProcessMessages; sin un mejor resultado! – Whiler

+1

Probablemente necesite usar PostMessage en lugar de SendMessage. – tinman

+0

¡Solo lo pruebo! ¡y funciona! ¡Muchas gracias! Actualizo la segunda parte de mi respuesta. – Whiler