Hardware Prüfung

Sunchezz

Bekanntes Mitglied
Moinsen...

Ich wollte mal rein aus interesse fragen obs möglich is (warscheinlich über irgendwelche Umwege)
zu erfahren ob zum Beispiel ein Monitor an oder aus ist.

Is da schonmal jemandem was über den Weg gelaufen?


Wäre für mich grad interessant, da ich zwei Bildschirme habe, und der eine meistens aus ist, wenn nun eine Anwendung startet, könnte man ja ermitteln lassen auf welchem Bildschirm sie angezeigt werden soll.

Grüße 😉
 
naja, ob wirklich nen knopf aus ist, lässt sich wohl schwer ermitteln, aber ich glaube selbst dann erledigt das OS das im hintergrund irgendwie und trägt das irgendwo ein oder?

aber um die frage mal direkt zu beantworten, das zweite würde mir wohl schon reichen 😉
 
Das könnte dir weiterhelfen
Java:
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] devices = env.getScreenDevices();
for (GraphicsDevice currentDevice : devices) {
	System.out.println(currentDevice.getIDstring());
}
 
also ist schonmal was, aber anscheinend nicht das gebrauchte...
selbst wenn der Screen "tot" ist, sagt er mir welche "registriert" sind!
also immernoch beide!
 
Da wären wir wieder bei der Definition von "tot". Was meinst du damit? Wenn ich im BS einstelle, dass nur ein Monitor verwendet werden soll, dann wird auch nur einer angezeigt.
 
also ich habs jetzt versucht mit Monitor wirklich über knopf ausschalten!
Das hat schonmal nicht funktioniert...

ich nehme an der quelltext holt sich die devices nur aus der config des OS?
wenn jetzt aber der sleeptimer für einen bildschirm eingescaltet ist, müsste der ja auch noch trotzdem weiter aufgelistet werden, da er ja trotzdem noch drin steht!
 
Also dass es mit dem Knopf nicht funktioniert sollte auch so klar sein :bahnhof:
Ansonsten wirst du ohne JNI wohl nicht weiter kommen.
 
Ich wollte mal rein aus interesse fragen obs möglich is (warscheinlich über irgendwelche Umwege)
zu erfahren ob zum Beispiel ein Monitor an oder aus ist.
Ja, das war mir schon klar 😉

Die frage bleibt aber, wo bekomm ich die Infos genau her...
wie ich sie mir dann beschaffe ist ja dann nur noch ne relativ einfache aufgabe, hoff ich jedenfalls xD
 
Ich glaube nichtmals das du mit c da weit kommen würdest. Normalerweise musste du dich darauf verlassen das dir dein Betriebsystem die richtige anzahl an Monitoren zurückliefert, und das selbige angeschaltet sind.
 
ich lehn mich mal ganz weit aus dem fenster obwohl ich weis das das so definitiv NICHT funktionieren wird

es müsste ein protokoll geben das über die verbindung grafikkarte <-> monitor die abfrage des energiezustandes des monitors zulässt *gibt es schon mal nicht*
es gibt allerdings ein protokoll was die abfrage von monitor-spezifischen daten zulässt ... wie z.b. abfrage welche auflösungen und frequenzen unterstüzt werden ...
da ich überzeugter ati-user bin *meine einzige nvidia die ich mal hatte ist nach 2 wochen in rauch aufgegangen* weis ich aus erfahrung das zumindest der ati-treiber die möglichkeit hat während der laufzeit diese daten abzufragen ...
der treiber hat 3 zustände
NOT_CONNECTED
NO_INFORMATION
INFORMATION_xxx
wobei hier der aktuelle treiber sehr intiligent ist und den unterschied zwischen einem abgeschaltetem monitor und einer monitor der dieses protokoll einfach nicht implementiert erkennen kann ... er also bei einem monitor der diese abfrage nicht unterstützt kein NOT_CONNECTED wirft sondern richtig ein NO_INFO ...

nun kann man daraus nicht erkennen ob überhaupt ein monitor angeschlossen ist oder nicht ... sondern lediglich ob die grafikkarte in der lage ist informationen vom monitor zu lesen , den entsprechende fehlercode zu erzeugen das es einfach keine infos gibt ... oder das es fehlgeschlagen ist diese informationen auszulesen ...

das ergebnis variert auch sehr stark in abhängigkeit von grafikkarte / monitor kombinationen so das kein erfolg garantiert ist ...

wie das ganze bei nvid-karten läuft weis ich nicht und ist mir persönlich auch ziemlich egal ... *soweit ich weis bietet der nvid treiber KEINE möglichkeit neue geräte während der runtime zu erkennen *zumindest nicht in seinem eigenen steuerungsprogramm**

was du nun also tun könntest wäre dich mit JNA in den treiber hooken und versuchen dieses event auszulösen ... und dann natürlich den return-code auszuwerten ...

das das ganze so nicht machbar sein wird erwähnte ich bereits am anfang ... aber es wäre zumindest ein proof-of-concept das es sowas schon teilweise gibt ...

das größte problem was du jedoch nicht ändern können wirst : es fehlt das protokoll zum direkten erkennen einer vorhanden verbindung und die abfrage des energiezustandes ...
so lange das nicht durch eine RFC gefordert wird an die sich dann auch alle halten wird dein vorhaben so nicht umsetzbar sein
 
ok, dieser Vortrag war sehr ernüchternd 😀

Also, meiner Vorstellung nach, muss es aber irgendwie gehen...
wenn der Bildschirm vom OS in den "Sleepmodus" gesetzt wird, reagiert er auch auf Maustastenanschläge um ihn wieder in Betrieb zu nehmen...
Also findet ja zumindest eine Kommunikation zwischen OS und Grafikkarte statt...
und ob ein Signal zum Bildschirm rausgegeben wird oder nicht!

Und diesen Zustand müsste man doch IRGENDWIE abfragen können...
Direkt über Java natürlich nicht mehr, aber dafür gibt es ja die geliebten Schnittstellten 🙂
 
hmm ... also den betriebsmodus der grafikkarte sollte man schon mit JNI/JNA erfragen können ... allerdings würde ich hier nicht unbedingt auf das OS selbst wetten sondern dierekt mit dem treiber arbeiten ... weil ich glaube kaum das du eine entsprechende referenz im OS selbst findest die diesen zustand speichert ... das wird sicherlich der treiber selbst machen *mit standard-event vom OS vllt ?*

aber wie gesagt : wenn du am monitor den knopf drückst oder ganz und gar den stecker ziehst ... also das richtig zu erkennen dürfte extrem schwierig werden ... mit reinem java ist das nicht mehr machbar ...

und wenn das ganze OS-unabhängig sein soll stell dich schon mal auf eine lange liste mit Lib's eins die du durchgehen darfst ...
 
ja ne, also wenn überhaupt wolle ich das nur für mich haben.

Aber größtenteils ist es eigentlich nur grundlegendes interesse!

hmm... also direkt im treiber, gibt es vernüntige doku über solche treiber?
hab jetzt grad auf anhieb erstmal nichts gefunden, hab jetzt aber auch grad erstmal keine zeit!
Da kümmere ich später drum!
 

Zurück
Oben