- Offizieller Beitrag
Nur ein kleiner Schnipsel.
Wenn ich die Mausposition benötige, brauche ich die häufig nicht in der Standardausgabe (absolute Screenkoordinaten), sondern z.B. relativ zum aktiven Fenster. Also schalte ich erst per Opt den Modus um und nach Positionsermittlung dann wieder zurück. Da die Skriptzeilen ja immer dieselben sind, bietet es sich an, dafür eine Funktion zu verwenden. Zusätzlich wandele ich die Koordinaten in eine POINT Struktur. Diese oder ein Pointer darauf wird in vielen anderen Funktionen benötigt. Wenn man die Struktur nicht braucht, macht es auch keinen Unterschied ob man $MPos[0] oder $MPos.X verwendet (Wobei die Struktur den Vorteil der besseren Lesbarkeit hat).
AutoIt
;-- TIME_STAMP 2021-02-22 11:57:57
; Position der Maus als Struktur .X, .Y - das macht auch _WinAPI_GetMousePos
; MouseCoordMode als Parameter in der Funktion enthalten - aber das nicht ;-)
; Standard: absolute Screenposition
Local $tMPos = _MouseGetPosEx()
ConsoleWrite(StringFormat('Screen absolut >> X:%6s,Y:%6s', $tMPos.X, $tMPos.Y) & @CRLF)
; MouseCoordMode(0): relativ zum aktiven Fenster
$tMPos = _MouseGetPosEx(0)
ConsoleWrite(StringFormat('Akt. Fenster relativ >> X:%6s,Y:%6s', $tMPos.X, $tMPos.Y) & @CRLF)
; MouseCoordMode(2): relativ zum Clientbereich des aktiven Fensters
$tMPos = _MouseGetPosEx(2)
ConsoleWrite(StringFormat('Clientbereich akt. Fenster relativ >> X:%6s,Y:%6s', $tMPos.X, $tMPos.Y) & @CRLF)
; Einzelparameterabfrage
ConsoleWrite(StringFormat('Screen absolut, Einzelparamter >> X:%6s', _MouseGetPosEx().X) & @CRLF)
;===================================================================================================
; Function Name....: _MouseGetPosEx
; Description......: Gets the mouse position as structure POINT.
; Parameter(s).....: $_MouseCoordMode Sets the option to determine the mouse position. 1 (Default) - absolut on screen
; Return Value(s)..: POINT structure with mouse position by choosed coord mode
;===================================================================================================
Func _MouseGetPosEx($_MouseCoordMode=1) ; $_MouseCoordMode: 0=rel. aktive Wnd., 1=abs. Screen(default), 2=rel. client area aktive Wnd.
Local $tPos = DllStructCreate('struct;long X;long Y;endstruct')
Local $optOld = Opt('MouseCoordMode', $_MouseCoordMode)
Local $aPos = MouseGetPos()
Opt('MouseCoordMode', $optOld)
$tPos.x = $aPos[0]
$tPos.y = $aPos[1]
Return $tPos
EndFunc ;==>_MouseGetPosEx
Alles anzeigen