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?
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>
#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 ###
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)
If WinActive($fenstername) Then
$fensterposition = WinGetCaretPos()
EndIf
If not WinActive($fenstername) Then
MsgBox ( 64, "Fehlermeldung!", $fenstername & " war nicht Aktiv!" & @CRLF & "Bitte starte das Programm erneut!")
exit
EndIf
If WinActive($fenstername) Then
MouseMove ($fensterposition[0], $fensterposition[1])
EndIf
EndSelect
WEnd
Func ende ()
Exit
EndFunc