Wie kann man abfragen ob ein zweiter Monitor angeschaltet ist?

  • Wie kann man abfragen, ob ein zweiter Monitor angeschaltet ist?

    Die Abfrage sollte Im Hintergrund aus einem Skript heraus geschehen.

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

  • Probier das mal:

    Spoiler anzeigen
    [autoit]

    $Anzahl = _GetMonitorCount()
    If Not @error Then MsgBox(Default,Default, "Anzahl Monitore: " & $Anzahl)

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

    Func _GetMonitorCount()
    Local $cbMonitorEnumProc = DllCallbackRegister("MonitorEnumProc", "ubyte", "ptr;ptr;ptr;int")
    If @error Then Return SetError(1, 0, False)
    Local $strctCount = DllStructCreate("int Count")
    If @error Then Return SetError(2, @error, False)

    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)

    Return Int(DllStructGetData($strctCount, "Count"))
    EndFunc

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

    Func MonitorEnumProc($hMonitor, $hdcMonitor, $lprcMonitor, $dwData)
    Local $strctCount = DllStructCreate("int", $dwData)
    DllStructSetData($strctCount, 1, DllStructGetData($strctCount, 1)+1)
    Return True
    EndFunc

    [/autoit]


    Kann es nur nicht wirklich testen da ich nur einen Monitor habe ;)

    Einmal editiert, zuletzt von AspirinJunkie (27. Juni 2009 um 12:24)

  • @Asprin-Junky:

    Super!! Funktioniert - vielen lieben Dank

    @Der-Doc
    interessante Sache,
    blos bevor ich da was gefunden habe (einschliesslich dem Testen) hat Aspirin-Junky schon 'ne ready-made Lösung gebracht