Thema: Delphi 2. Monitor ansteuern

Einzelnen Beitrag anzeigen

BlueEarl

Registriert seit: 30. Okt 2007
2 Beiträge
 
#7

Re: 2. Monitor ansteuern

  Alt 31. Okt 2007, 00:19
Guten Abend alle miteinander.

Echt cooles Forum habt ihr hier, wäre ich nur früher darauf gestoßen. ^^

Na ja, zu meinem Problem. Hab zwar etwas herumgestöbert, aber (noch) keine handfesten Lösungsansätze gefunden.

Aufbau/Konzept:

Von einem Rechner aus werden 2 bzw. 4 LCD-Monitore über HDMI bzw DVI abgesteuert. Beim Setup wird auch alles ordnungsgemäß eingestellt, Desktop auf 2./3./4. Monitor erweitern, Monitore nebeneinander anordnen, Frequenz einstellen usw., Programm (in Delphi7 geschrieben) plaziert seine Objekte auch akurat auf allen Monitoren, paßt alles wunderbar. Und in der Regel läuft das System auch (theoretisch) bis alle Ewigkeiten.

Problem:

1) Manchmal kommt es vor, daß der Kunde einen der Monitore ausschaltet / nach dem PC einschaltet / HDMI/DVI-Kabel im laufenden Betrieb absteckt oder umsteckt oder weiß der Geier was noch alles gemacht wird. Auf jeden Fall verliert Windows den entsprechenden Monitor, und man muß manuell wieder den Desktop erweitern (meistens reicht das alleine schon aus, aber eben nicht immer). Schlimmstenfalls muß neu gestartet werden (wenn z.B. der Monitor nicht angeschlossen war beim Systemstart, dann hat man gar nicht die Option zum Desktop erweitern.

2) Auf der Messe ist ein anderes Problem aufgetreten. Es wurde ein LCD-Monitor mit 2 HDMI-Eingängen von zwei verschiedenen Rechnern angesteuert. Den HDMI-Eingang kann man mit der Fernbedienung umschalten. Umschalten von Eingang A auf Eingang B funktionert, PC-Bild wird angezeigt, zurückschalten auf Eingang A bringt blauen Bildschirm (= kein Eingang). Schaue ich mir in Rechner A die Systemstreuerung an, steht unter Monitor "Plug&Play Monitor (Getrennt)". Bisher haben wir hier neu gestartet, weiß noch nicht, ob das Gerät deaktivieren und wieder aktivieren da Abhilfe schafft.



Was ich brauche sind nach Möglichkeit automatisierte Erkennung von Monitoren samt deren Auflösung, Positioniereungen und Frequenzen, vorallem aber die Möglichkeit die oben genannten getrennten/verlorenen Monitore wieder einzubinden, am besten ohne Neustart.

Aktueller Stand meines Wissens:

Screen.MonitorCount
> gibt mir die Anzahl der aktiven Monitore zurück
>> ist für mein Problem wunderbar geeignet

Screen.Monitor[x].Bla
> Vermutlich Position vom x. Monitor bezogen auf linke obere Ecke des 0. Monitors
>> werde ich morgen nochmal testen, u.a. ob man die Position einfach so verändern kann

procedure für Auflösung und Frequenz von Daniel B
>> Muß ich mir auch noch genauer anschauen, vorallem weil ich gezielt einen Monitor umstellen können will (bzw. alle Monitore gleichzeitig, haben alle dieselben Werte bis auf die Positionierung)

(Erkennung und) Aktivierung eines Monitors durch Windows
>> Bisher noch kein Ansatz


Wäre echt Klasse, wenn sich hier ein Lösungsweg finden ließe.
Fremdprogramme (also praktisch alles außer Delphi) sind eher weniger erwünscht, mein Bruder hat zwar in AutoIt was programmiert, das will der Chef aber nicht haben.

Schon mal vielen Dank im Voraus für eure Antworten und nachträglich für die Antworten, die ich hier schon gefunden habe.




P.S.: Der Chef hat demnächst ein System mit 8 Monitoren in Planung, sollte also (wenn überhaupt) nach Möglichkeit nicht ein Neustart pro Monitor werden. ^^

P.P.S.: Im Laufe der Zeit hat sich bei mir eine recht stattliche procedure- und function-Sammlung angehäuft, wie z.B. eine allgemeine, try-except-gekapselte Laderoutine für Stringlisten. Viele Funktionen sind "gewachsen" und insofern nicht optimal aufgebaut, manche habe ich sogar doppelt drin (unter anderen Namen), müßte ich noch bereinigen und dokumentieren *würg*. Aber mal gemäß dem Fall, daß ich das alles hinter mir habe, wie und wo könnte ich dieses denn online stellen? Ist noch keine DLL sondern ein einfaches DataModule-Unit.

[edit]
P.P.P.S.: Sehe grad, daß ich das hier als Reply gepostet habe. Es fällt ja auch unter den Titel, von daher wollte ich keinen eigenen Beitrag aufmachen. Bin ein Freund von eher wenigen Beiträgen.
[/edit]
  Mit Zitat antworten Zitat