- Offizieller Beitrag
Wenn man mehrere Monitore am Rechner hat und den Desktop auf diese erweitert, dann hat man logischerweise eine größere Gesamtauflösung.
@DesktopWidth und @DesktopHeight geben einem aber nur die Auflösung vom ersten Monitor zurück. Ich habe mir mal die _WinApi-Funktionen genauer angesehen und dabei entdeckt, dass man damit auch die Gesamtauflösung auslesen kann. Rausgekommen ist eine kleine Funktion:
Spoiler anzeigen
#include <Array.au3>
#include <WinAPI.au3>
$aRes = _GetGlobalResolution()
_ArrayDisplay($aRes)
Func _GetGlobalResolution()
Local $aRes[4], $hWindow, $stRET
$hWindow = _WinAPI_GetDesktopWindow()
$stRET = _WinAPI_GetWindowPlacement($hWindow)
If Not @error Then
$aRes[0] = DllStructGetData($stRET, 'rcNormalPosition', 1) ; left
$aRes[1] = DllStructGetData($stRET, 'rcNormalPosition', 2) ; top
$aRes[2] = DllStructGetData($stRET, 'rcNormalPosition', 3) ; right
$aRes[3] = DllStructGetData($stRET, 'rcNormalPosition', 4) ; bottom
Return $aRes
Else
Return SetError(1, 0, 0)
EndIf
EndFunc ;==>_GetGlobalResolution
Ich habe das bei mir mit zwei Monitoren getestet. Der erste Monitor hat eine Auflösung von 1920x1200 und der Zweite 1600x1200, wobei ich den hochkant (um 90 Grad gedreht) betreibe, also 1200x1600.
Ergebnisse:
Zweiter Monitor links neben dem Ersten: -1200, 0, 1920, 1600 (left, top, right, bottom)
Zweiten Monitor rechts neben dem Ersten: 0, 0, 3120, 1600 (left, top, right, bottom)
Zweiter Monitor über dem Ersten: 0, -1600, 1920, 1200 (left, top, right, bottom)
Zweiter Monitor unter dem Ersten: 0, 0, 1920, 2800 (left, top, right, bottom)
Das sieht für mich sehr gut aus und ich hoffe mal, dass das bei euch auch funktioniert.