Window-Fragen

  • Hallo,
    heute habe ich ein paar Fragen zu Fenstern:

    • Wie kann ich einen bestimmten Bereich kontrollieren und bemerken, ob ein Window sich in diesem befindet?
    • Wie kann ich erkennen, ob ein Fenster bewegt wurde?

    Ich hoffe, jemand kann mir helfen...

    Danke, schoneinmal im Voraus!

    MatthiasG.

    Einmal editiert, zuletzt von MatthiasG. (19. März 2009 um 20:02)

  • Das machstu am Besten mit einer GuiRegisterMsg und WinGetPos! =)

    Beispielscript:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    $gui = GuiCreate("Main Gui", 300,300)
    $pos1 = WinGetPos("Main Gui")
    GuiSetState()

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

    GUIRegisterMsg($WM_MOVE,"_WM_MOVE")

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

    While 1
    sleep(250)
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func _WM_MOVE($hWnd, $Msg, $wParam, $lParam)
    $pos2 = WinGetPos("Main Gui")
    if $pos1[0] <> $pos2[0] Then
    ConsoleWrite("X-Pos: " & $pos2[0] & @CRLF & "Y-Pos: " & $pos2[1] & @CRLF)
    EndIf
    if $pos2[0] < 100 Then
    MsgBox(0,"","")
    EndIf
    EndFunc

    [/autoit]

    2 Mal editiert, zuletzt von ChaosKeks (19. März 2009 um 15:50)

  • Ich will das ja nicht von meiner GUI feststellen, sondern von allen anderen Fenstern...

  • Auf die schnelle:

    [autoit]

    Run ("C:\WINDOWS\system32\mspaint.exe")
    WinWait ("Unbenannt - Paint", "Farben")

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

    $pos1 = WinGetPos ("Unbenannt - Paint")

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

    While 1
    $pos2 = WinGetPos("Unbenannt - Paint")
    sleep(500)
    If $pos1[0] <> $pos2[0] Then
    MsgBox(0,"Pos-Info","Fenster befindet sich im Bereich:" & @CRLF & @CRLF & "LinksOben: " & $pos2[0] & "/" & $pos2[1] & @CRLF & "RechtsUnten: " & $pos2[0] + $pos2[2] & "/" & $pos2[1] + $pos2[3])
    EndIf
    $pos1 = $pos2
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von ChaosKeks (19. März 2009 um 16:23)

  • Das ist mir auch klar, ich möchte das nur nicht auf ein Fenster beschränken...

    Ich möchte alle Fenster kontrollieren, die sichtbar sind.

    Problem: Benutze ich die Listen-Funktion, die alle Fenster zurückgibt in einer While-Schleife geht die Prozessorlast heftig hoch. Ich möchte nur registrieren, ob ein Fenster bewegt wurde, am besten noch es auf einen bestimmten Bereich beschränken...