MausZeiger auf einem Fenster

  • Hallo,

    Ich will herausfinden, ob der Mauszeiger auf einem Fenster ist.
    Dafür hab ich das hier:

    [autoit]


    local $square[4]
    $square = WinGetPos($win)
    $square[2] = $square[0] + $square[2]
    $square[3] = $square[1] + $square[3]

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

    $mp = MouseGetPos()
    If ($square[0] < $mp[0] < $square[2]) and ($square[1] < $mp[1] < $square[3]) Then
    MsgBox(0,"", $win)
    EndIf

    [/autoit]

    Vorher im Programm habe ich noch einen Teil der mir alle Fenster auflistet, die nicht minimiert sind nicht "" "start" oder "program manager" heißen.
    Aber irgendwie gibt mir das hier jedes nicht minimierte Fenster wieder.
    Warum?

  • Ich verstehe nicht so ganz was ich damit soll , den Teil habe ich schon selber programmiert, der funktioniert auch.
    Die Fenster werden mir auch mit koordinaten richtig wieder gegeben, das einzige was nicht klappt ist die if abfrage, z.B. liefert mir 150<25<200 True zurück.

    [autoit]

    MsgBox(0,"", (150<25<180))

    [/autoit]

    da kommt auch true raus!?
    Warum?

    Hab mein programm jetzt so umgeändert:

    [autoit]

    MsgBox(0,"", (150<25 and 25<180))

    [/autoit]


    jetzt funktioniert alles.

  • die array kann man nicht so addieren ,mit einem zweiten würde es gehn

    $square[2] = $square[0] + $square[2]
    $square[3] = $square[1] + $square[3]

    zb so

    Spoiler anzeigen
    [autoit]


    #Include <Array.au3>
    local $size[4], $testerg[1]
    $win="halo klapt"
    $size = WinGetPos("FF - Page Analyzer","")
    _ArrayDisplay($size,"WinGetPos")
    $test = $size [0] + $size [2]
    _ArrayAdd($testerg,$test)
    $zeitertest = $size [1] + $size [3]
    _ArrayAdd($testerg,$zeitertest)
    _ArrayDisplay($testerg,"test")
    $mp = MouseGetPos()
    If ($size[0] < $mp[0] < $size[2]) and ($size[1] < $mp[1] < $size[3]) Then
    MsgBox(0,"", $win)

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

    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Hi!


    So wie er selber schon festgestellt hat die mehrfach anweisung funktioniert nicht

    kommt immer True

    [autoit]


    ConsoleWrite(($size[0] < $mp[0] < $size[2]) and ($size[1] < $mp[1] < $size[3]) & @crlf)

    [/autoit]


    kommt immer False

    [autoit]


    ConsoleWrite(($size[0] < $mp[0] > $size[2]) and ($size[1] < $mp[1] >$size[3]) & @crlf)

    [/autoit]

    Lg Kleienr

  • z.B. liefert mir 150<25<200 True zurück.


    Nur der Vollständigkeit halber, und damit du weißt woran es lag. Wir gehen 150<25<200 mal von Links nach rechts ab.

    150 < 25 - Das ergibt "False", was gleichbedeutend mit 0 ist.
    False < 200 - Ergibt dann wieder True, weil False (0) kleiner ist als 200.