![]() |
Routine gesucht, die feststellt, ob Monitor an oder aus.
Hallo zusammen,
kennt jemand von euch eine einfache routine, mit der man auslesen kann, ob der angeschlossene monitor ein- bzw. ausgeschaltet wurde? es geht dabei um eine applikation, die auf einem "unbemannten" pc läuft und per e-mail meldet, dass der monitor ausgeschaltet wurde. vielen dank im voraus. |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Hallo,
also ich denke, so eine Funktion kann es gar nicht geben, zumindestens auf dem Software-Level. Heiko |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Zitat:
aber man kann doch über dde sogar die seriennummer des monitors (zumindest bei den neueren) auslesen. warum soll es keine möglichkeit geben, festzustellen, ob der monitor aktiv oder passiv ist - sprich: ein- oder ausgeschgaltet...? |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Also ich glaub man kann nur feststellen, ob sich der PC im Standbymodus befindet, also der Monitor vom Rechner ausgeschaltet wurde. Aber ob der User jetzt den Monitor aus oder eingeschaltet hat kann man meines Wissens nach nicht feststellen.
|
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Zitat:
hast du vielleicht einen Link wie man die seriennummer des Monitors auslesen kann? Das würde mich auch interessieren :) bei deinem Problem kann ich dir leider nicht weiterhelfen :( gruß Oliver |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
:gruebel:
Wenn es sich eh nur um einen "unbemannten pc" handelt warum isses dann so schlimm, wenn der Monitor aus ist? Dringende Alarmmeldungen wirst du ja bestimmt nicht nur über Monitor ausgeben oder? (Blink-/Blitz-leuchte, Tröte, Summer, Modem, Wählgerät, eMail, 1Euro-Jobler, ...) Nagut .. das hilft jetzt nicht wirkllich bei deinem Problem .... :oops: |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Wenn man per DDE die Seriennummer auslesen kann, dann kann man das auch (Achtung, dirty hack!) dazu verwenden, nachzusehen ob der Monitor noch an ist. Dann reagiert er nämlich auf die DDE-Anfrage. Wenn er ausgeschaltet ist, kann er das natürlich nicht...
Ist natürlich keine "ordentliche" Lösung, mag aber für den einen oder anderen Anwendungsfall praktikabel sein. |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Moin Zusammen,
nur um die Begrifflichkeit zu korrigieren: Wenn, dann geht es mit DDC nicht DDE. Der einfachste Weg die Seriennummer des Monitores herauszubekommen geht über die Registry. Im Key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\D ISPLAY findet man alle möglichen Monitore, die dem System mal bekannt waren. Innerhalb dieser Keys gibt es dann noch eine weitere Ebene, in der die Keys ähnlich aussehen wie 6&471624d7&0&11443344&01&00, und unterhalb dieser Keys wiederum gibt es den Key namenes "Device Parameters", in dem sich der Wert EDID befindet, ein Binärwert. An Offset $48 (also 72 dezimal) beginnt ein Block der sich aus vier Werten zusammensetzt. Aufbau Kennung DWORD Inhalt Array [1..14] of Byte Kennung DWORD Inhalt Array [1..14] of Byte Kennung DWORD Inhalt Array [1..14] of Byte Kennung DWORD Inhalt Array [1..14] of Byte Das erste Byte des Inhaltes ist bei den in Frage kommenden Einträgen immer 00 Als Kennungen gibt es: 000000FF => Seriennummer 000000FE => Hersteller 000000FC => Modellbezeichnung Bei diesen drei Kennungen handelt es sich dann um Klartext. Dieser ist mit Blanks auf 13 Byte aufgefüllt. Die Reihenfolge liegt nicht fest, und die Angaben sind optional, was sogar zur Folge haben kann, dass man eine bestimmte Kennung mehrfach vorfindet, oder eben auch gar nicht. Wenn sich parallel zum Key "Device Parameters" noch der Key "Control" befindet so hat man den Key erwischt, der aktuell gültige Daten für EDID enthält. [EDIT] Der aufwändigere, dafür aber sauberere Weg (da man nicht selber suchen muss ;-)) führt über die SetupApi. [/EDIT] |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Zitat:
![]() |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Zitat:
stimmt. Zitat:
|
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Zitat:
|
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Zitat:
jaaaa genau so! diesen lösungsansatz hatte ich mir auch überlegt. mir ist völlig egal, ob ich die info über umwegen oder dirty hacks zustande kommen :). leider finde ich nur hinweise darauf, wie ich die vom windows in die registry (d. plug'n play) eingetragene seriennummer auslese und nicht, wie man direkt diese über die graka erhalten kann. geht man nämlich davon aus, dass man den monitor über die graka auslesen kann, dann kann man auch davon ausgehen, dass dieser eingeschaltet und angeschlossen ist, wenn man diese infos über ddc bekommt. es sei denn, dass ein monitor über ddc auch daten liefert, selbst wenn dieser ausgeschaltet sein sollte, was ich nicht glaub (bzw. hoffe) :). ich habe da einen lösungansatz erhalten, den ich testen und anschliessend hier posten werde (wenn's klappt). gruss paul |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Moin Paul,
bitte erstelle künftig eine Antwort auf verschiedene Beiträge, und nicht eine je Beitrag. Danke. |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Gibt es "schon" eine Lösung zu dem Problem?
|
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Zitat:
wenn ein Monitor keinen "Rückkanal" hat wie DDC, kann man nicht feststellen, ob er eingeschaltet ist, Punkt. Dann bleibt einem nur übrig, selbst einen Sensor vor den Bildschirm zu setzen und abzufragen. Ob übliche Grossbildschirme eine Rückmeldung haben, weiss ich nicht, ich glaube eher nicht. Gruss Reinhard |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Zitat:
Man kann wohl davon ausgehen, dass alle neueren Monitore einen Rückkanal über ![]() Nur wie man selbst Daten über DDC überträgt ist die Frage, denn das machen die Grafikkarte, der Treiber und Windows unter sich aus. |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Angenommen meine Bildschirme haben DCC, wie kann ich das auslesen?
Die Links hier aus dem Forum führen nur zur eine Seite bei M$; das Demo-Programm wird aber nicht zum download angeboten. Da steht auch nirgendwo ein kleines Stück API, Code, o.ä. Momentan klappt bei mir die SuFu von DP nicht, ich suche aber mal nachher nach "DCC", wenn es wieder geht. Evtl. hat von Euch jemand ein Stück Quellcode zur Hand zu dem Thema? Zitat Paul: Zitat:
|
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Zitat:
Man kann wohl davon ausgehen, dass alle neueren Monitore einen Rückkanal über ![]() Nur wie man selbst Daten über DDC überträgt ist die Frage, denn das machen die Grafikkarte, der Treiber und Windows unter sich aus. |
Re: Routine gesucht, die feststellt, ob Monitor an oder aus.
Zitat:
Gruss Reinhard |
AW: Routine gesucht, die feststellt, ob Monitor an oder aus.
GetDevicePowerState von '\\.\LCD'
Delphi-Quellcode:
function GetDevicePowerState(hDevice:DWORD;var pfOn:BOOL):BOOL; stdcall; external kernel32;
function CheckMonitorState:Boolean; var Hwnd:THandle; Stat:LongBool; begin Hwnd:=CreateFile('\\.\LCD' , 0, 0, nil, OPEN_EXISTING, 0, 0); if Hwnd <> INVALID_HANDLE_VALUE then GetDevicePowerState(Hwnd,Stat); Result:=Stat; CloseHandle(Hwnd); end; //Beispiele procedure TForm1.FormCreate(Sender: TObject); begin if CheckMonitorState then Caption:='Monitor ON' else Caption:='Monitor OFF'; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if CheckMonitorState then Panel1.Color:= clGreen else Panel1.Color:= clRed; end; |
AW: Routine gesucht, die feststellt, ob Monitor an oder aus.
Die
Delphi-Quellcode:
sollte am Besten einen 3-wertigen Rückgabewert haben:
function CheckMonitorState
Monitor an, Monitor aus oder Zustand unbekannt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz