Hi, ich brauche eine Funktion die Ferststellt ob eine Control in diesem Falle ein Button, den Maus Fokus hat. Mit ControlGetFocus findet man ja nur raus wann die Control den Keyboard Focus hat.
Gibt es da ne möglichkeit? Der Button wird übrigens erleuchtet wenn man mit der Maus drüber fährt. Oder ist es möglich herauszufinden welche Control sich grad unter der Maus befindet, so wie bei Window Info?
ControlGetFocus - Geht das auch mit dem Maus Fokus?
-
- [ gelöst ]
-
Neklor -
16. Oktober 2009 um 11:39 -
Geschlossen -
Erledigt
-
-
Du kannst das mittels der Mausposition ermitteln.
Hab mal schnell eine Funktion dazu geschrieben.
Spoiler anzeigen
[autoit]Run("calc.exe")
[/autoit] [autoit][/autoit] [autoit]
WinWait("[Class:SciCalc]")
$hWnd = WinGetHandle("[Class:SciCalc]")
SendKeepActive("[Class:SciCalc]")
Send("!as") ;Umschalten auf Standard-Ansicht
$hCtrl = "Button1" ;Button 'MC'While WinExists("[Class:SciCalc]")
[/autoit] [autoit][/autoit] [autoit]
ToolTip(_MouseOverCtrl($hWnd, $hCtrl))
Sleep(10)
WEndFunc _MouseOverCtrl($hWnd, $hCtrl)
[/autoit]
;funkey 16.10.2009
If Not WinActive($hWnd) Then Return 0
Local $WndPos = WinGetPos($hWnd), $ClientSize = WinGetClientSize($hWnd)
Local $CtrlPos = ControlGetPos($hWnd, "", $hCtrl)
Local $Rahmen = ($WndPos[2] - $ClientSize[0]) / 2
Local $x = $WndPos[0] + $Rahmen + $CtrlPos[0]
Local $y = $WndPos[1] + $WndPos[3] - $ClientSize[1] + $CtrlPos[1] - $Rahmen
Local $Pos[4] = [$x, $y, $x + $CtrlPos[2], $y + $CtrlPos[3]]
Local $MousePos = MouseGetPos()
If $Pos[0] < $MousePos[0] And $Pos[2] > $MousePos[0] And $Pos[1] < $MousePos[1] And $Pos[3] > $MousePos[1] Then Return 1
Return 0
EndFunc -
Hi,
[autoit]GUIGetCursorInfo ()
[/autoit]gibt ein Array mit einigen Daten zurück, dort ist auch die ID des aktuell unter dem Mauscursor befindlichen Controls.
ciao
Andy -