Entwickler-Ecke

Windows API - Monitor an/aus


lemming - Mi 19.11.03 15:34
Titel: Monitor an/aus
Hi,

ich habe folgenden Code gefunden um einen Monitor auszuschalten.


Delphi-Quelltext
1:
  SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 1);                    


Damit geht er wieder an.


Delphi-Quelltext
1:
  SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);                    


Wenn ich die Maus bewege, dann geht der Monitor auch wieder an, aber das will ich nciht. Ich will das er vollständig aus bleibt bis ich es will.

lemming
[/delphi]


blackbirdXXX - Mi 19.11.03 15:40

Vielleicht nimmst du das Handle eines anderen Fensters? Ich glaube das dann die Mausbewegung auf deiner Anwendung nichts macht.


lemming - Mi 19.11.03 16:32

Das hat damit nichts zu tun. Ich hab das ganze in einer Console-type Application laufen, jeddoch ohne Konsole und mit diesen Units: Windows, Messages, SysUtils, Forms;
da diese für die o. g. Anweisungen benötigt werden.

Also mit dem Handle hat das nix zu tun.


lemming - Mi 19.11.03 16:34

Habs gerade trotzdem probiert. Mit einem anderen Handle geht das An und Aus gar nciht mehr :cry:


worm - Sa 22.11.03 00:03

@blackbirdXXX: Damit würde sich das IMHO auch nicht lösen lassen... Du schickst den Monitor ja nur in den Standby-Modus, und Windows verlässt den Standby-Modus standardmäßig bei Mausbewegungen oder Tastatureingaben.
Leider weiß ich nicht, wie sich das Verhalten ändern oder überlisten lässt... Du könntest es mit einem MouseHook oder einfacher mit BlockInput [http://www.delphi-forum.de/viewtopic.php?p=106972#106972] versuchen... Windows bekommt aber ja dann trotzdem noch alle Mausbewegungen vom Maustreiber und wird schätzungsweise auch noch darauf reagieren. Aber einen Versuch ist es wohl wert :-), viel Erfolg!