Moin Moin
AspirinJunkie hat mir bei der auflösung des x'ten Monitors geholfen, jetzt brauch ich nurnoch etwas. ich bräuchte die position des x'ten Monitors, also z.B. is der Desktop nach rechts erweitert (dann steht der monitor wohl rechts ^^).
mfg
Moin Moin
AspirinJunkie hat mir bei der auflösung des x'ten Monitors geholfen, jetzt brauch ich nurnoch etwas. ich bräuchte die position des x'ten Monitors, also z.B. is der Desktop nach rechts erweitert (dann steht der monitor wohl rechts ^^).
mfg
Da sich die Auflösung aus der Position berechnet ist das eigentlich nur eine kleine Änderung:
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]$Monitore = _GetMonitors()
If Not @error Then _ArrayDisplay($Monitore)
Func _GetMonitors()
Local $cbMonitorEnumProc = DllCallbackRegister("MonitorEnumProc", "ubyte", "ptr;ptr;ptr;int")
If @error Then Return SetError(1, 0, False)
Local $strctCount = DllStructCreate("uint Count;uint Width[12];uint Height[12];int left[12];int top[12]")
If @error Then Return SetError(2, @error, False)
Local $iCount
DllStructSetData($strctCount, "Count", 0)
$Ret = DllCall("User32.dll", "ubyte","EnumDisplayMonitors","ptr", 0,"ptr", 0, "ptr", DllCallbackGetPtr($cbMonitorEnumProc), "ptr", DllStructGetPtr($strctCount))
If @error Or $Ret[0] = 0 Then Return SetError(3, @error, False)
DllCallbackFree($cbMonitorEnumProc)
$iCount = Int(DllStructGetData($strctCount, "Count"))
Local $aMonitors[$iCount+1][4] = [[$iCount]]
For $i = 1 To $iCount
$aMonitors[$i][0] = Int(DllStructGetData($strctCount, "Width",$i))
$aMonitors[$i][1] = Int(DllStructGetData($strctCount, "Height",$i))
$aMonitors[$i][2] = Int(DllStructGetData($strctCount, "left",$i))
$aMonitors[$i][3] = Int(DllStructGetData($strctCount, "top",$i))
Next
Return $aMonitors
EndFunc
Func MonitorEnumProc($hMonitor, $hdcMonitor, $lprcMonitor, $dwData)
Local $strctRECT = DllStructCreate("long left;long top;long right;long bottom", $lprcMonitor)
Local $strctCount = DllStructCreate("uint Count;uint Width[12];uint Height[12];int left[12];int top[12]", $dwData)
Local $iNumber = DllStructGetData($strctCount, "Count")
Local $Height = Int(DllStructGetData($strctRECT, "bottom"))-Int(DllStructGetData($strctRECT, "top"))
Local $Width = Int(DllStructGetData($strctRECT, "right"))-Int(DllStructGetData($strctRECT, "left"))
DllStructSetData($strctCount, "Width", $Width, $iNumber+1)
DllStructSetData($strctCount, "Height", $Height, $iNumber+1)
DllStructSetData($strctCount, "left", Int(DllStructGetData($strctRECT, "left")), $iNumber+1)
DllStructSetData($strctCount, "top", Int(DllStructGetData($strctRECT, "top")), $iNumber+1)
DllStructSetData($strctCount, "Count", $iNumber+1)
Return True
EndFunc
Zusätzlich zur Auflösung wird dir jetzt noch die Koordinate der linken oberen Ecke des jeweiligen Monitors angezeigt.
nochmal fette sache
man sollte mal so ne monitor udf machen xD
thx
mfg