Auflösung des 2ten Monitors

  • Moin Moin

    mit @DesktopHeight und @DesktopWidth kann man die auflösung des ersten monitors auslesen. für den 2ten monitor geht das leider nicht :S kennt irgendjemand ne möglichkeit die auflösung des 2ten oder 3ten (falls noch einer dazu kommt ^^) auszulesen?

    mfg

    Einmal editiert, zuletzt von K1773R (27. Juni 2009 um 12:28)

  • Teste das mal (kann nicht testen - hab nur einen Monitor):

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Monitore = _GetMonitors()
    If Not @error Then _ArrayDisplay($Monitore)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    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]")
    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][2] = [[$iCount,0]]

    For $i = 1 To $iCount
    $aMonitors[$i][0] = DllStructGetData($strctCount, "Width",$i)
    $aMonitors[$i][1] = DllStructGetData($strctCount, "Height",$i)
    Next

    Return $aMonitors
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    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]", $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, "Count", $iNumber+1)
    Return True
    EndFunc

    [/autoit]
  • ich bin nicht so der held darin, fragen sollte mir wieterhelfen:
    ich hab 2 anzeigen und niemand hat hier gesagt was passiert wenn nur eine da ist....
    es is an zu nehmen das dies in allen situationen funktioniert, aber ich möchte mir mal sicher sein...

    Dies ist ein Arzeneimittel.
    Bei Risiken und Haluzinationen fressen sie die Packungsbeilage und schlagen Sie ihren Arzt oder Apotheker.
    Jede Haftung wird abgelent.

    Vielen Dank für Ihre Kundentreue.
    mfg. TimBlo

    Aperture Science

    http://www.youtube.com/watch?v=Y6ljFaKRTrI

  • Stimmt - Fragen sollten dir weiterhelfen - einfach mal kurz ausprobieren ist was für Anfänger... :pinch:

    Ja - es funktioniert natürlich auch mit nur einem Monitor (selbst bei keinem Monitor würde es funktionieren...)
    Aber ganz ehrlich: Findest du das nicht auch ein bisschen merkwürdig so ne Frage zu stellen anstatt einfach mal kurz zu testen?... :huh:

  • einen Laptop hätte ich schon um es mit einer anzeige zu testen, aber den muss ich erst einrichten, und das lohnt sich nicht
    und dem PC will ich die sekundäre anzeige nich weg nehmen nur um was zu testen :P
    fragen is da die einfachste lösung :)
    also danke dir :thumbup:
    das programm wird also bei 100 anzeigen sogar besser als die grafik funktionieren :D

    Dies ist ein Arzeneimittel.
    Bei Risiken und Haluzinationen fressen sie die Packungsbeilage und schlagen Sie ihren Arzt oder Apotheker.
    Jede Haftung wird abgelent.

    Vielen Dank für Ihre Kundentreue.
    mfg. TimBlo

    Aperture Science

    http://www.youtube.com/watch?v=Y6ljFaKRTrI