2011-09-04 3 views
5

Je voulais être en mesure de activer/désactiver les moniteurs mes à partir d'un script Delphi, de Windows XP à 7. J'ai cherché dans la section Delphi sur stackoverflow et je n'ai pas trouvé de réponse.Comment allumer/éteindre le (s) moniteur (s)?

J'ai également trouvé de nombreux exemples qui ne fonctionnent plus sous Windows 7 (uniquement avec XP).

+1

Les premiers résultats googling pour "allumer/éteindre mes moniteurs à partir d'un script Delphi" à peu près tous la liste "yo ur "solution. – Mat

+0

Je suis d'accord Mat; Je l'ajoute juste parce que je ne l'ai pas trouvé sur stackoverflow (et comme j'ai lu [ceci] (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your -own-questions /)) ... – Whiler

+1

Mon ['TSystemState'] (http://specials.rejbrand.se/dev/classes/systemstate/readme.html) fait cela. –

Répondre

8

J'ai testé avec succès ce sous Windows XP et Windows 7:

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

Pour désactiver l'écran:

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

Pour allumer l'écran:

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

Si vous savez pourquoi il se bloque avec la diffusion ... J'ai essayé avec Application.ProcessMessages; sans meilleur résultat! – Whiler

+1

Vous devez probablement utiliser PostMessage au lieu de SendMessage. – tinman

+0

Je viens de le tester! et il fonctionne! Merci beaucoup! Je mets à jour la deuxième partie de ma réponse. – Whiler

Questions connexes