2011-09-04 11 views
5

volevo essere in grado di accendere/off miei monitor da una sceneggiaturaDelphi, da Windows XP a 7.Come accendere/spegnere il/i monitor/i?

Ho cercato all'interno della sezione Delphi su stackoverflow e non ho trovato la risposta.

ho trovato anche molti campioni che non funziona più su Windows 7 (solo con XP).

+1

I primi risultati su google per "accendere/spegnere i miei monitor da uno script Delphi" praticamente tutta la lista "yo ur "soluzione. – Mat

+0

Sono d'accordo Mat; Lo aggiungo solo perché non l'ho trovato su stackoverflow (e come ho letto [questo] (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your -RISORSE-domande /)) ... – Whiler

+1

mio [ 'TSystemState'] (http://specials.rejbrand.se/dev/classes/systemstate/readme.html) fa questo. –

risposta

8

Ho testato con successo questo su Windows XP e Windows 7:

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

Per spegnere il monitor:

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

Per accendere il monitor:

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

Se si conosce il motivo per cui si blocca con la trasmissione ... ho provato con Application.ProcessMessages; senza risultato migliore! – Whiler

+1

Probabilmente è necessario utilizzare PostMessage anziché SendMessage. – tinman

+0

L'ho appena provato! e funziona! Molte grazie! Aggiorno la seconda parte della mia risposta. – Whiler