Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi 3 Monitore verwalten (https://www.delphipraxis.net/154097-3-monitore-verwalten.html)

sportkeks 27. Aug 2010 14:14

3 Monitore verwalten
 
ich hoffe das passt hier rein war mir da jetzt nicht so sicher -.-

Hallo an alle die in dieses Thema gefunden haben :D
ich komm mal gleich zur sache:
ich will mir ein programm schreiben was meine 3 monitore verwaltet habe aber überhaupt kein ansatz wie ich überhaupt an die monitore herran komme (befehlsmäßig)

Die Aufgabe das Programms:

ich habe 2 Monitore im normalen erweiterten desktop betrieb laufen das funktioniert auch ohne probleme
wenn ich jetzt aber noch meinen 3. Monitor (TV-Gerät) hinzu schalten will sagt mir mein grafik treiber meine Graka unterstützt nur 2 monitore gleichzeitig (hat aber 3 anschlüsse hmm komisch -.-). da ich aber filme über meinen tv gugen will muss ich immer bei windows einstellen das ich meinen sekundär monitor trennen will und dafür den 3. dazuschalten will.

halt über dieses menu:

http://spk2.sp.ohost.de/spkskrempel/monitorsettings.jpg

dazu ist zu sagen das das bild auf dem TV nur Dupliziert werden soll und nicht wie bei den beiden "echten" monitoren erweitert werden soll

ich hätte das jetzt gerne so das ich ein kleines programm auf dem desktop habe mit 2 schaltflächen

1. schaltfläche:
-monitor 2 trennen
-Bild von monitor 1 auf tvgerät duplizieren

2. schaltfläche
-TV gerät trennen
-Monitor 1 und Monitor 2 arbeiten im erweiterten desktop betrieb

ich hoffe hier gibtes einige leute die mir bei diesem problem helfen können
danke schonmal im vorraus Gruß Sportkeks

blackfin 27. Aug 2010 14:23

AW: 3 Monitore verwalten
 
Zitat:

...sagt mir mein grafik treiber meine Graka unterstützt nur 2 monitore gleichzeitig (hat aber 3 anschlüsse hmm komisch -.-).
Normale Grafikkarten haben eigentlich nur 2 RAMDACs (oder sogar nur einen, deswegen haben viele Grakas einen reinen Digital-Anschluss und ne analoge VGA-Buchse) und auf die Anschlüsse wird dann einfach nur umgeschalten (VGA <-> TV Out), es können aber keine 3 aktiv sein.
Meistens ist es aber so, dass die Grafikkarten zwei DVI-Anschlüsse haben, die aber auch noch das Analog-Signal mitführen (DVI-I), wenn du deinen TV-Out aktivierst, wird aber ein DVI-Anschluss komplett deaktiviert, anstatt auf rein-Digital umzuschalten.

Es gibt aber z.B. Matrox-Karten, da kannst du bis zu 8 Monitore an eine Kiste hängen.

sportkeks 27. Aug 2010 14:29

AW: 3 Monitore verwalten
 
naja ich wollte mir eigl. nicht gleich ne neue graka kaufen.
meine graka hat 2 dvi und einen svideo anschluss
es werden alle 3 monitore in windows erkannt 2 davon können aber nur aktiv sein ist richtig.

das programm soll nur die einstellerei für die umschaltung durch einen knopfdruck ersetzen
also wie schon oben beschrieben
das muss ich zur zeit immer noch von hand in diesem menu machen und es funktioniert ja auch aber ist halt lästig

blackfin 27. Aug 2010 14:34

AW: 3 Monitore verwalten
 
Also ich nutze dafür UltraMon, das hat zusätzlich zu deinen geforderten Dingen (Anzeige-Profile, die man sogar auf globale Hotkeys setzen kann) noch viele andere Features für Multi-Monitor-Systeme und kostet nicht die Welt.

Sowas selbst zu schreiben ist sicher möglich, aber nicht in ein paar Tagen erledigt. Selbst UltraMon hatte teilweise über lange Zeit massive Probleme mit der Monitor-Verwaltung unter Win7, die aber nun (endlich) gelöst sind und das Programm läuft nun wie am Schnürchen.

sportkeks 27. Aug 2010 14:39

AW: 3 Monitore verwalten
 
ja ich habe auch dieses programm drauf, aller dings kann ultramon nicht auf das gerät zugreifen was derzeit getrennt ist und es "aktivieren" sondern nur auf die zwei zur zeit aktiven geräte
dies kann man nur über windows selber machen.

naja ich will ja keine extra funktionen einfügen wie es ultramon tut ich will ja nur die windows funktionen die schon vorhanden sind über einen befehl ausführen vll gibt es ja da eine shellexecute funktion für oder ähnliches

blackfin 27. Aug 2010 14:42

AW: 3 Monitore verwalten
 
Öhm....:gruebel::gruebel:
Das klingt bei der Beschreibung aber anders:
Zitat:

Anzeigeprofile machen es einfach zwischen verschiedenen Anzeigekonfigurationen zu wechseln. Ein Anzeigeprofil speichert den Anzeigemodus, Position und Status (aktiviert/deaktiviert) jedes Monitors, und auch welcher Monitor der primäre Monitor ist.
Ich probier das heute Abend jetzt mal aus...

Probiert und getestet:
Also ich kann hier über die Anzeigeprofile problemlos Monitore aktivieren und deaktivieren...

blackfin 27. Aug 2010 14:47

AW: 3 Monitore verwalten
 
Zitat:

will ja nur die windows funktionen die schon vorhanden sind über einen befehl ausführen vll gibt es ja da eine shellexecute funktion für oder ähnliches
Das geht auch über UltraMon-Scripting:

Zitat:

Für fortgeschrittene Benutzer: Sie können UltraMon Features in Ihren eigenen VBScript, JScript oder anderen Windows Script Dateien benutzen.

Das folgende Beispiel in VBScript aktiviert oder deaktiviert den zweiten Monitor:

Const POS_ALL = &H7

Set sys = CreateObject("UltraMon.System")
Set mon = sys.Monitors("2")

If mon.Enabled = True Then
sys.SavePositions POS_ALL
mon.Enabled = False
sys.ApplyMonitorChanges
Else
mon.Enabled = True
sys.ApplyMonitorChanges
sys.RestorePositions POS_ALL
End If

mkinzler 27. Aug 2010 14:50

AW: 3 Monitore verwalten
 
Das Beispiel sollte sich auch problemlos nach Delphi übertragen lassen

sportkeks 27. Aug 2010 17:03

AW: 3 Monitore verwalten
 
hm naja mit meiner version geht es iwie nicht denke mal es liegt daran das ich die kostenlose version hab
könnte mir mal einer n kleines beispiel machen wie ich das in delphi umsetzen kann ? bin in delphi nicht so der pro was sowas angeht.

himitsu 27. Aug 2010 17:20

AW: 3 Monitore verwalten
 
Ich würde das Beispiel aus Post #7 erstmal so übersetzt.

Delphi-Quellcode:
uses ComObj;

const POS_ALL = $07;
var sys, mon: Variant{IDispatch};
begin
  sys := CreateOleObject('UltraMon.System');
  mon := sys.Monitors('2');
  if mon.Enabled then begin
    sys.SavePositions(POS_ALL);
    mon.Enabled := False;
    sys.ApplyMonitorChanges;
  end else begin
    mon.Enabled := True;
    sys.ApplyMonitorChanges;
    sys.RestorePositions(POS_ALL);
  end;
end;
Dieses scheint wohl den 2. Monitor umzuschalten (an/aus),
aber k.A. ob dieses so funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz