Forum: PC-Programmierung erkennen ob Monitor im Standy ist


von Martin (Gast)


Lesenswert?

Hallo,

wißt ihr eine Möglichkeit (donet oder Windows API) um zu erkennen, ob 
der Monitor im Standby ist?

Danke,
Martin

von Timmo H. (masterfx)


Lesenswert?

irgendwie so soll das gehen
1
HANDLE disp;
2
int state;
3
disp = CreateFile( "\\\\.\\Display1",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_READONLY,NULL);
4
GetDevicePowerState (disp,&state);
Kann auch "\\\\.\\LCD" sein.
Kanns leider nichtesten weil GCC irgendwie GetDevicePowerState nicht 
kennt

von Timmo H. (masterfx)


Lesenswert?

Jap, habe gerade mal ein neues MinGW installiert und es klappt bei mir 
folgendermaßen:
1
#include <stdio.h>
2
#include <windows.h>
3
4
int main(){
5
  HANDLE disp;
6
  int state=0;
7
  disp = CreateFile( "\\\\.\\LCD",GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_READONLY,NULL);
8
  while(1){
9
    GetDevicePowerState (disp,&state);
10
    printf("%d\n",state);
11
    Sleep(1000);
12
  }
13
}
Das gibt mir jede Sekunde 0 oder 1 zurück, jenachdem ob der Monitor in 
Standby ist oder nicht.

von Timmo H. (masterfx)


Lesenswert?

Und wars das was du willst? Klappts bei dir?
Das Display1 ist glaub ich bei 98 und ME.

von Martin (Gast)


Lesenswert?

Danke, schaut schon ganz gut aus, habs aber noch nicht probieren können 
(bin bis Dienstag unterwegs).

Hab aber grad mal im MSDN nachgeschaut:

http://msdn.microsoft.com/en-us/library/aa372690%28VS.85%29.aspx

Da steht: "This function cannot be used to query the power state of a 
display device."

Muß ich mal prüfen ob das dann geht oder nicht...

Auf jeden Fall schonmal danke fürs Raussuchen!

Martin

von Timmo H. (masterfx)


Lesenswert?

Wie gesagt, ich habe es nur bei Standby Modus des Monitors getestet und 
da ging es.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.