WinGertCaretPos funktioniert bei script mit GUI nicht?

  • Hallo Leute,

    habe ein script geschrieben und arbeite mit WinGetCaretPos.
    Ich will, dass ich nur die Coords vom FensterINHALT bekomme und damit weiterarbeite, also folgendes:

    Das ist mein script, also wenn ich auf start klicke und ich das Fenster einlese, dann soll er ja eigentlich links oben mit der Maus hin, aber er geht ein stückchen weiter rechts. Klicke ich jetzt erneut auf Start ohne das script nochmal zu schließen und wieder zu öffnen, dann geht er mit der Maus diesesmal richtig nach links oben.
    Bei hunderten von Tests geht er imemr beim 1. mal falsch aber beim 2. Mal richtig, wieso?

    [autoit]

    HotKeySet ("{F11}", "ende")

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

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Main = GUICreate("MouseMove Test", 283, 106, 543, 415)
    GUISetFont(8, 400, 0, "Comic Sans MS")
    GUISetBkColor(0xFFFFFF)
    $combo = GUICtrlCreateCombo("Wähle die Art des MouseMove aus!", 16, 16, 249, 25)
    GUICtrlSetData(-1, "MouseMove 1")
    $Start = GUICtrlCreateButton("Start", 64, 64, 153, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $msg = GUIGetMsg(1)
    Select
    Case $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $Main
    Exit
    Case $msg[0] = $Start
    MsgBox(0, "Fenster einlesen", "Bitte Fenster innerhalb von 3 Sekunden auswählen!")
    Sleep(3000)
    $fenstername = WinGetTitle("")
    MsgBox(0, $fenstername, "Das ausgewählte Fenster ist:" & @CRLF & $fenstername)
    Sleep (2000)
    WinActivate($fenstername)
    Sleep (1000)

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

    If WinActive($fenstername) Then
    $fensterposition = WinGetCaretPos()
    EndIf

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

    If not WinActive($fenstername) Then
    MsgBox ( 64, "Fehlermeldung!", $fenstername & " war nicht Aktiv!" & @CRLF & "Bitte starte das Programm erneut!")
    exit
    EndIf

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

    If WinActive($fenstername) Then
    MouseMove ($fensterposition[0], $fensterposition[1])
    EndIf
    EndSelect
    WEnd

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

    Func ende ()
    Exit
    EndFunc

    [/autoit]

    3 Mal editiert, zuletzt von DeathNote (29. Juli 2011 um 14:24)