Seite 1 von 1

Multi-Monitor-Kombination (Monitore neben- und übereinander)

Verfasst: 21.11.2013 01:51
von sibru
Bisher habe ich 4 Monitore nebeneinandner problemlos und begeisternd im Einsatz. Nun sollen auch noch weitere Monitore übereinander dazukommen. Für Pausibilitäts-Prüfungen (z.Bsp. "auf welchem Monitor befindet sich der Mauszeiger ?" oder "Fenster Monitor-mittig aufbauen") benötige ich die Anfangs-Positionen der einzelnen Monitore (z.Bsp. x/y der linken, oberen Monitor-Ecke oder so). Mein bisheriger Algorithmus (via DesktopWidth(x)) klappt nur bei nebeneinanderliegenden Monitoren / Desktops.
Weiss wer, wie ich die Kombinationen der Monitore rauskriege (ab Besten unabhängig von
seitlicher / höhentlicher Reihenfolge), um z. Bsp. den Mauszeiger eindeutig einem Monitor zuordnen zu können ?
Also neben DesktopWidth(x) und DesktopHeight(x) brauch´ ich sowas wie DesktopX(x) und DesktopY(x)... und das Ganze optimalerweise auch noch im Rahmen vom KVM-Umschaltung (Keyboard, Video und Maus umschaltend zwischen 4 Rechnern: also einige Monitore können je nach Bedarf dem einen oder anderen Rechner zugeordnet werden, wodurch sich die Monitor-Kombinationen der Rechner im laufenden Betrieb ändert)
Ist wohl ´ne ziemlich individuelle Problemstellung, vielleicht hat doch schon jemand hilfreiche Erfahrungen gemacht ???

Re: Multi-Monitor-Kombination (Monitore neben- und übereinan

Verfasst: 21.11.2013 09:27
von Derren
sibru hat geschrieben: neben DesktopWidth(x) und DesktopHeight(x) brauch´ ich sowas wie DesktopX(x) und DesktopY(x)
Na wenn du die Befehle brauchst, dann benutz sie doch auch :D

DesktopX() und DesktopY() machen genau das was du willst. Der Hauptmonitor ist immer 0,0.
Wenn du jetzt einene Monitor links daneben hast, dann hat dieser die Koordinaten -W and 0 (also bei 2 Monitoren mit einer Auflösung von 800x600 px: -800 und 0)

Du musst einfach nur ExamineDesktops() auf jedem Rechner aufrufen und schon werden die Daten aktualisiert.
Am besten in einem Timer, da du ja nicht weißt wann die Bildschirme umgeschaltet werden.


Hier, einfach mal das Beispiel aus der Hilfe erweitert.

Code: Alles auswählen

;
; ------------------------------------------------------------
;
;   PureBasic - Desktop example file
;
;    (c) 2004 - Fantaisie Software
;
; ------------------------------------------------------------
;

NbDesktops = ExamineDesktops()

MessageRequester("Information", "You have "+Str(NbDesktops)+" desktop(s)")

; Let's enumerate all the desktops found
;
For k=0 To NbDesktops-1
  
  Text$ = "Desktop n°"+Str(k+1)+#LF$+#LF$
  Text$ + "Size: "+Str(DesktopWidth(k))+"*"+Str(DesktopHeight(k))+#LF$
  
  ;DesktopPosition X/Y hinzugefügt
  Text$ + "Position: "+Str(DesktopX(k))+" / "+Str(DesktopY(k))+#LF$
  
  Text$ + "Color depth: "+Str(DesktopDepth(k))+#LF$

  
  If DesktopFrequency(k) = 0
    Text$ + "Frequency: Default"+#LF$+#LF$
  Else
    Text$ + "Frequency: "+Str(DesktopFrequency(k))+" Hz"+#LF$+#LF$
  EndIf
  
  Text$ + "Name: "+DesktopName(k)
  
  MessageRequester("Information", Text$)
  
Next

Re: Multi-Monitor-Kombination (Monitore neben- und übereinan

Verfasst: 21.11.2013 16:03
von sibru
Danke ! :allright:
Ich hab´ PB4.20, da gibts die beiden Anweisungen nicht. Und die Suche in der VersionsHistrory nach "Desktopx" war auch erfolglos...
Immerhin wieder mal ´n Anschubser zum PB-Update. :|

Gruss
Sibru

Re: Multi-Monitor-Kombination (Monitore neben- und übereinan

Verfasst: 21.11.2013 16:39
von Derren
Oha, ist die schon so alt oO Mir ist auch gerade erst bewusst geworden, dass wir jetzt auf 5.x sind. Dachte mir grade "hm, 4.2 die hab ich doch auch *nachschau* Oh 5.2"
Ich bin auch so einer der nur updatet wenn ein Code aus dem Forum mal wieder nicht funktioniert weil der Befehl einfach noch nicht existiert^^

Gutes Gelingen :)