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

Für allgemeine Fragen zur Programmierung mit PureBasic.
sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

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

Beitrag 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 ???
Bild Bild
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

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

Beitrag 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
Signatur und so
sibru
Beiträge: 265
Registriert: 15.09.2004 18:11
Wohnort: hamburg

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

Beitrag 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
Bild Bild
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

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

Beitrag 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 :)
Signatur und so
Antworten