Befehl ausführen nach Mausklick in ein bestimmten Bereich eines Fensters

  • Hallo,

    könnte mir jemand sagen wie ich Autoit sagen kann, dass er nach einem Mausklick in einem bestimmten Bereich eines Fensters einen Befehl ausführt?

    Finde leider nichts dazu.


  • Welches Fenster? Welcher Bereich? Mehr Informationen, bitte!

    Hallo,

    also es soll ein Fenster mit einem bestimmten Titel sein.

    und ein Bereich, also ein Rechteck/Quadrad z.B. mit den Koordinaten (x=10,y=10) bis (x=100,x=100) - wenn man in diesem Bereich von dem Fenster klickt soll ein Befehl ausgeführt werden.

  • Tja, dann musst Du Dir halt selbst was basteln.
    Hier ein paar Stichwörter:
    - _IsPressed
    - WinGetPos
    - MouseGetPos

    Hi,

    verstehe nicht wieso du jetzt beleidigt bist, den Titel des Fensters weiß ich noch nicht, daher ist es doch unrelevant und du könntest da einen X-Beliebigen eintragen in ein Beispiel?
    Ich würde nur gerne in einem Beispiel sehen wie man das realisiert..

    • Offizieller Beitrag

    Ich bin keineswegs beleidigt.
    Es ist nur so, dass Du wichtige Informationen nicht nennst. Wenn ich jetzt lese, dass Du den Titel noch nicht weisst, dann lässt das darauf schliessen, dass es sich um eine eigene GUI handelt.
    In dem Fall hast Du noch ganz andere Möglichkeiten (z.B. GUIGetCursorInfo):

    [autoit]


    #include <GUIConstantsEx.au3>
    $hGui = GUICreate('Test')
    GUISetState()
    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $GUI_EVENT_PRIMARYUP
    $aInfo = GUIGetCursorInfo($hGui)
    If $aInfo[0] > 10 And $aInfo[0] < 50 And $aInfo[1] > 10 And $aInfo[1] < 50 Then MsgBox(0, 'Klick', 'getroffen')
    EndSwitch
    WEnd

    [/autoit]
  • Hallo,

    danke für die Mühe.

    Aber es soll für kein eigenes GUI sein.

    So funktioniert es bei mir:

    also, ich muss dazu sagen ich bin ne Programmier Niete (bzw nie damit beschäftigt)
    und muss mit den Befehlen bzw. können auskommen das ich habe :D
    Sicher nicht übersichtlich und man kann es bestimmt viel kleiner schreiben.


    [autoit]


    #Include <Misc.au3>
    $dll = DllOpen("user32.dll")

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

    While 1
    Sleep ( 250 )
    If _IsPressed("01", $dll) Then

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

    ;----------------------RUN?------------------------------------------;
    $mpos = MouseGetPos()
    $wpos = WinGetPos("FENSTER")
    $mx= $mpos[0]
    $my= $mpos[1]
    $Xkord = $mx - $wpos[0]
    $Ykord = $my - $wpos[1]

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

    ;--------Feld1-----------;
    If $xkord <= 90 AND $xkord >= 10 then
    $x1ok=1
    Else
    $x1ok=0
    EndIf

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

    If $ykord <= 70 AND $ykord >= 50 then
    $y1ok=1
    Else
    $y1ok=0
    EndIf

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

    if $x1ok=1 and $y1ok=1 Then
    $run1=1
    Else
    $run1=0
    EndIf
    ;--------Feld1-----------;

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

    ;-------Feld2-------;
    If $xkord <= 290 AND $xkord >= 200 then
    $x2ok=1
    Else
    $x2ok=0
    EndIf

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

    If $ykord <= 70 AND $ykord >= 50 then
    $y2ok=1
    Else
    $y2ok=0
    EndIf

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

    if $x2ok=1 and $y2ok=1 Then
    $run2=1
    Else
    $run2=0
    EndIf
    ;-------Feld2-------;

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

    ;----------AUSFÜHREN-----------;
    if $run1=1 OR $run2=1 Then
    send ("AUSGEFÜHRT!")
    Else
    Endif
    ;----------AUSFÜHREN-----------;

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

    ;---------------------------RUN?--------------------------;

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

    ExitLoop
    EndIf
    WEnd
    DllClose($dll)

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


    Wäre schön wenn sich jemand die Zeit nimmt und das besser schreiben könnte :D