E1M1 Posted June 2, 2009 Posted June 2, 2009 How do I get win title and controlID which is at mouse location?I want something like autoit window info, but simplified version. I need it to be function and it must work so it finds out on which window is mouse (title) and 2nd return value must be control handle. example: My mouse Coords are x=500 and y=600, and Notepad window is there then it must return something like. $value[0] "Untitled - Notepad" $value[1] "0x00210226" But there is 1 problem.I have no idea how to do it. edited
Skruge Posted June 2, 2009 Posted June 2, 2009 Take a look at _WinAPI_WindowFromPoint(). [font="Tahoma"]"Tougher than the toughies and smarter than the smarties"[/font]
E1M1 Posted June 2, 2009 Author Posted June 2, 2009 (edited) #Include <WinAPI.au3> sleep(3000) $tPoint = MouseGetPos() MsgBox(1,1,_WinAPI_WindowFromPoint($tPoint)) instead of notepad handle it returns SciTE handle :S Whats wrong? EDIT: and even if I know window title, I still don't know Control handle Edited June 2, 2009 by E1M1 edited
Skruge Posted June 3, 2009 Posted June 3, 2009 Smoke_N gave a good example here: how to get the GUI the mouse is hovering over ?I modified it to use the WinAPI UDF functions and also display the Control handle/Class...expandcollapse popup#include <WinAPI.au3> #include <WindowsConstants.au3> AdlibEnable("_Mouse_Win_GetInfoAdlib", 10) While 1 ConsoleWrite("Start Sleep" & @CRLF) Sleep(0x7FFFFFFF) WEnd Func _Mouse_Win_GetInfoAdlib() Local $a_info = _Mouse_Win_GetInfo() If @error Then Return ToolTip("Window Handle = " & $a_info[0] & @CRLF & _ "Window Title = " & $a_info[1] & @CRLF & _ "Control Handle = " & $a_info[2] & @CRLF & _ "Control Class = " & $a_info[3] & @CRLF & _ "Mouse X Pos = " & $a_info[4] & @CRLF & _ "Mouse Y Pos = " & $a_info[5]) EndFunc ;==>_Mouse_Win_GetInfoAdlib Func _Mouse_Win_GetInfo() Local $structCoords, $a_mpos, $hWnd, $hControl, $sClass $structCoords = DllStructCreate($tagPOINT) ; Build Structure $a_mpos = MouseGetPos() ; Get Mouse Position If @error Then Return SetError(1, 0, 0) DllStructSetData($structCoords, "X", $a_mpos[0]) ; Populate Structure DllStructSetData($structCoords, "Y", $a_mpos[1]) ; Populate Structure $hControl = _WinAPI_WindowFromPoint($structCoords) ; Identify Window If Not $hControl Then Return SetError(2, 0, 0) $hWnd = _WinAPI_GetAncestor($hControl, $GA_ROOTOWNER); Get Parent Window $sClass = _WinAPI_GetClassName($hControl) ; Get Control Class If Not $hWnd Then Return SetError(3, 0, 0) Local $a_ret[6] = [$hWnd, WinGetTitle($hWnd), $hControl, $sClass, $a_mpos[0], $a_mpos[1]] Return $a_ret EndFunc ;==>_Mouse_Win_GetInfo [font="Tahoma"]"Tougher than the toughies and smarter than the smarties"[/font]
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now