Jump to content
Sign in to follow this  

Find Control...Please Help !

Recommended Posts

I want to find a control in a gui using x y position ,for exemple : findcontrol($handleofgui,$x,$y) and return control handle

Thank You

Share this post

Link to post
Share on other sites


To what end? :unsure:

If you want to action the control using ControlClick then you can already define the control using the coordinates as a parameter. Look at <Using Autoit - Controls> in the Help file to see how. :>


Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:


ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area


Share this post

Link to post
Share on other sites

If you know the exact X/Y coordinates of the upper left corner of the control, relative to the the client area of the parent window, then this works:

$hButton = ControlGetHandle($hGUI, "", "[X:100; Y:100]")

Note that works with the coordinate OF THE CONTROL, not just any coordinate in the control.

To find the control by giving an X/Y coordinate somewhere within it, look for use of WindowFromPoint function, but that uses screen relative coordinates:

#include <GuiConstantsEx.au3>

Global $hGUI, $idButton, $hButton

$hGUI = GUICreate("Test", 300, 300)
$idButton = GUICtrlCreateButton("TEST", 100, 100, 100, 100)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE

        Case $idButton
            $hButton = ControlGetHandle($hGUI, "", "[X:100; Y:100]")
            ConsoleWrite("$idButton = " & $idButton & "; $hButton = " & $hButton & @LF)

        Case Else
            $avMousePos = MouseGetPos()
            $avWinFrmPt = DllCall("user32.dll", "hwnd", "WindowFromPoint", "int", $avMousePos[0], "int", $avMousePos[1])
            $hWinFrmPt = $avWinFrmPt[0]
            ToolTip("HWND = " & $hWinFrmPt & @LF & "X = " & $avMousePos[0] & "; Y = " & $avMousePos[1])



Valuater's AutoIt 1-2-3, Class... Is now in Session!For those who want somebody to write the script for them: RentACoder"Any technology distinguishable from magic is insufficiently advanced." -- Geek's corollary to Clarke's law

Share this post

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...