2008-11-30 7 views

Répondre

5

Il semble que, lorsque Windows veut démarrer l'économiseur d'écran ou éteindre le moniteur, il envoie un WM_SYSCOMMAND à la fenêtre supérieure avec un wParam de SC_SCREENSAVE (pour démarrer l'économiseur d'écran) ou un wParam de SC_MONITORPOWER et lParam de 1 ou 2 (pour éteindre le moniteur). Ce message sera ensuite passé à DefWindowProc, qui effectuera l'action. Donc, si votre fenêtre se trouve être la plus haute, vous pouvez intercepter ces événements et les ignorer (ou faire tout ce que vous voulez avant de les passer à DefWindowProc).

Sur Windows Vista, il semble y avoir une façon plus intuitive et plus fiable de connaître l'état de l'alimentation du moniteur. Vous appelez RegisterPowerSettingNotification pour indiquer au système d'envoyer à votre fenêtre un message WM_POWERBROADCAST avec un wParam de PBT_POWERSETTINGCHANGE et un lParam pointant vers une structure POWERBROADCAST_SETTING.

Je ne peux pas tester l'un ou l'autre puisque je n'ai actuellement aucun ordinateur avec Windows à proximité. J'espère, cependant, qu'ils vous dirigent dans la bonne direction.

Références:

+0

Vous monsieur est vraiment intelligent! –