Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Suche API um Bildschirm einzuschalten (https://www.delphipraxis.net/93050-suche-api-um-bildschirm-einzuschalten.html)

DoktorD 30. Mai 2007 20:55


Suche API um Bildschirm einzuschalten
 
Hi. Ihr kennt doch bestimmt die Einstellungen in Windows bei den Energieoptionen. U.a. ist da ja, das der Bildschirm nach der vorgegebenen Zeit ausgeschaltet wird.

Wie kann ich dies in Delphi abfragen, oder auch den Bildschirm wieder ein- oder ausschalten?

Danke für Eure Hilfe.

inherited 30. Mai 2007 21:06

Re: Suche API um Bildschirm einzuschalten
 
Mit
Delphi-Quellcode:
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);
kannst du den Monitor ausschalten, mit
Delphi-Quellcode:
SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
kannst du ihn wieder einschalten

Das hättest du aber auch alles mit der Suchfunktion herausgefunden.

DoktorD 30. Mai 2007 21:20

Re: Suche API um Bildschirm einzuschalten
 
Super, danke!!! Habe echt vorher gesucht, aber das hab ich net gefunden

DoktorD 30. Mai 2007 22:32

Re: Suche API um Bildschirm einzuschalten
 
Irgendwie klappt das trotzdem nicht.

Ich starte das Programm. Nach einer Minute schaltet Windows den Bildschirm aus. Dann läut im Programm der Timer, der den Bildschirm dann einschalten sollte.

Ich sehen den aber nur für einen bruchteil der Sekunde, danach ist wieder alles schwarz.

Ihr könnt ja mal meinen Quellcode ausprobieren.


Delphi-Quellcode:
var
  Form1: TForm1;
  Zeit : Integer;

implementation

{$R *.dfm}

procedure TForm1.BildschirmAusschalten;
begin
  SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 2);
end;

procedure TForm1.BildschirmEinschalten;
begin
  SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, -1);
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  Zeit := 10;
  BildschirmEinschalten;
end;

procedure TForm1.btnOnClick(Sender: TObject);
begin
  BildschirmEinschalten;
end;

procedure TForm1.btnOffClick(Sender: TObject);
begin
  BildschirmAusschalten;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
BildschirmEinschalten
end;

end.

Zacherl 30. Mai 2007 23:13

Re: Suche API um Bildschirm einzuschalten
 
Du könntest alternativ in den Energieoptionen einfach einstellen, dass Windows den Bildschirm gar nicht erst ausschaltet.

bitsetter 30. Mai 2007 23:23

Re: Suche API um Bildschirm einzuschalten
 
Hallo,

bei mir funktioniert dein Code so wie er soll. Der Monitor wird abgeschaltet und nach Ablauf des Timers schaltet er sich wieder an und bleibt es dann auch.

xxl1 30. Mai 2007 23:55

Re: Suche API um Bildschirm einzuschalten
 
vllt musst du noch die grafikkarte "einschalten", für die gibts ja auch nen energiesparmodus....

Mackhack 31. Mai 2007 04:38

Re: Suche API um Bildschirm einzuschalten
 
Hi,

ich hab grad mal in der MSDN nachgesehen und fand das:

Zitat:

SC_MONITORPOWER
Sets the state of the display. This command supports devices that have power-saving features, such as a battery-powered personal computer.

The lParam parameter can have the following values:

1 - the display is going to low power

2 - the display is being shut off
Wenn 1 fuer low power ist und 2 fuer shut off wie bekommt man denn dann den Monitor wieder angeschaltet, oder muss man interpretieren dass 1 fuer low power "Monitor an" bedeutet?

DoktorD 31. Mai 2007 05:42

Re: Suche API um Bildschirm einzuschalten
 
Naja, einschalten kann man den Bildschirm ja mit -1

Mackhack 31. Mai 2007 05:49

Re: Suche API um Bildschirm einzuschalten
 
Zitat:

Zitat von DoktorD
Naja, einschalten kann man den Bildschirm ja mit -1

Und wo steht das?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz