Jump to content

Recommended Posts

Posted (edited)

I'm trying to understand the use of TreeWalker and DllCall()s.  My ultimate goal is to use TreeWalker to list all children of webpages.  I've been working through the files for UIASpy to understand the logic.  After a weeks worth of searching for examples I'm still stuck on the reason for the repeated use of DllCalls in most of the functions.  Here is an example - the function 'UIASpy_CheckWindows()' (located in UIASpy_Elements.au3) is called from file UIASpy_Gui.au3.  In the function the following DllCall is used:

DllCall( "user32.dll", "lresult", "SendMessageW", "hwnd", $hTV, "uint", $TVM_GETITEMW, "wparam", 0, "struct*", $tItem )

I understand that the function 'SendMessageW' in 'user32.dll' sends a message to the window $hTV.  The message is '$TVM_GETNEXTITEM' and '$tItem' is a struct with additional information - Microsoft Doc -https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessagew.  The window $hTV is created in UIASpy_Gui.au3 and that's where I get lost.  Is there code in UIASpy_Gui.au3 that handles this message?  I don't know what to look for.  This procedure - Function called that contains DllCall (SendMessage) is repeatedly used.  Thanks in advance.

Edited by rmckay
Typo
Posted

UI Automation TreeWalker objects and DllCall() functions have absolutely nothing to do with each other. The purpose of the DllCall() functions is to implement compact and fast versions of the _GUICtrlTreeView_ and _GUICtrlListView_ functions.

The line you've copied is one of three lines:

DllStructSetData( $tItem, "hItem", $hChild )
DllCall( "user32.dll", "lresult", "SendMessageW", "hwnd", $hTV, "uint", $TVM_GETITEMW, "wparam", 0, "struct*", $tItem )
$iIdx = DllStructGetData( $tItem, "Param" ) - 100000

It's a compact and fast version of _GUICtrlTreeView_GetItemParam().

The message sent by SendMessage is handled by the Windows operating system (not AutoIt). Based on the information provided with the message, the operating system returns the treeview item param in the $tItem struct.

To list all controls in a window, you would typically use a recursive procedure like this:

#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7

#AutoIt3Wrapper_UseX64=y

Opt( "MustDeclareVars", 1 )

#include "UIA_Constants.au3"

; Array index offset relative to UIA_ControlTypeIds = -50000
Global Const $aUIControls = [ _
  "Button",       "Calendar",     "CheckBox",     "ComboBox",     "Edit",         "Hyperlink",    "Image",        "ListItem",     "List",         "Menu", _
  "MenuBar",      "MenuItem",     "ProgressBar",  "RadioButton",  "ScrollBar",    "Slider",       "Spinner",      "StatusBar",    "Tab",          "TabItem", _
  "Text",         "ToolBar",      "ToolTip",      "Tree",         "TreeItem",     "Custom",       "Group",        "Thumb",        "DataGrid",     "DataItem", _
  "Document",     "SplitButton",  "Window",       "Pane",         "Header",       "HeaderItem",   "Table",        "TitleBar",     "Separator",    "SemanticZoom", _
  "AppBar" ]

Global $oUIAutomation

Example()

Func Example()
  ; Create UI Automation object
  $oUIAutomation = ObjCreateInterface( $sCLSID_CUIAutomation, $sIID_IUIAutomation, $dtag_IUIAutomation )
  If Not IsObj( $oUIAutomation ) Then Return ConsoleWrite( "$oUIAutomation ERR" & @CRLF )
  ConsoleWrite( "$oUIAutomation OK" & @CRLF )

  ; Get Desktop element
  Local $pDesktop, $oDesktop
  $oUIAutomation.GetRootElement( $pDesktop )
  $oDesktop = ObjCreateInterface( $pDesktop, $sIID_IUIAutomationElement, $dtag_IUIAutomationElement )
  If Not IsObj( $oDesktop ) Then Return ConsoleWrite( "$oDesktop ERR" & @CRLF )
  ConsoleWrite( "$oDesktop OK" & @CRLF )

  ; Chrome condition
  Local $pCondition0
  $oUIAutomation.CreatePropertyCondition( $UIA_ClassNamePropertyId, "Chrome_WidgetWin_1", $pCondition0 )
  If Not $pCondition0 Then Return ConsoleWrite( "$pCondition0 ERR" & @CRLF )
  ConsoleWrite( "$pCondition0 OK" & @CRLF )

  ; Find pane control
  Local $pPane1, $oPane1
  $oDesktop.FindFirst( $TreeScope_Children, $pCondition0, $pPane1 )
  $oPane1 = ObjCreateInterface( $pPane1, $sIID_IUIAutomationElement, $dtag_IUIAutomationElement )
  If Not IsObj( $oPane1 ) Then Return ConsoleWrite( "$oPane1 ERR" & @CRLF )
  ConsoleWrite( "$oPane1 OK" & @CRLF & @CRLF )

  ; List all automation elements of a window
  ; in a hierarchical structure like a treeview.
  ListDescendants( $oPane1 )
  ;ListDescendants( $oPane1, 2 ) ; Only two levels
EndFunc

; List all child elements of parent
Func ListDescendants( $oParent, $iLevels = 0, $iLevel = 0 )
  If Not IsObj( $oParent ) Then Return
  If $iLevels And $iLevel = $iLevels Then Return

  ; Create RawViewWalker object
  Local $pRawViewWalker, $oRawViewWalker
  $oUIAutomation.RawViewWalker( $pRawViewWalker )
  $oRawViewWalker = ObjCreateInterface( $pRawViewWalker, $sIID_IUIAutomationTreeWalker, $dtag_IUIAutomationTreeWalker )
  If Not IsObj( $oRawViewWalker ) Then Return ConsoleWrite( "$oRawViewWalker ERR" & @CRLF )

  ; Get first child element
  Local $pUIElement, $oUIElement
  $oRawViewWalker.GetFirstChildElement( $oParent, $pUIElement )
  $oUIElement = ObjCreateInterface( $pUIElement, $sIID_IUIAutomationElement, $dtag_IUIAutomationElement )

  Local $sIndent = ""
  For $i = 0 To $iLevel - 1
    $sIndent &= "    "
  Next

  Local $iControl, $sElement
  While IsObj( $oUIElement )
    $oUIElement.GetCurrentPropertyValue( $UIA_ControlTypePropertyId, $iControl )
    $oUIElement.GetCurrentPropertyValue( $UIA_NamePropertyId, $sElement )
    ConsoleWrite( $sIndent & $aUIControls[$iControl-50000] & ( $sElement ? ": " & $sElement : "" ) & @CRLF )

    ListDescendants( $oUIElement, $iLevels, $iLevel + 1 )

    $oRawViewWalker.GetNextSiblingElement( $oUIElement, $pUIElement )
    $oUIElement = ObjCreateInterface( $pUIElement, $sIID_IUIAutomationElement, $dtag_IUIAutomationElement )
  WEnd
EndFunc

Output of your original post (before I added my post) displayed in Chrome:

$oUIAutomation OK
$oDesktop OK
$pCondition0 OK
$oPane1 OK

Document: Using DllCall() in UIASpy - AutoIt General Help and Support - AutoIt Forums
    Custom
        Custom
            Custom
                Custom
                    Hyperlink: AutoIt Logo
                        Image: AutoIt Logo
                    List
                        ListItem
                            Hyperlink: Existing user? Sign In  
                                Text: Existing user? Sign In  
                                Custom
                                    Text: ?
                        ListItem
                            Hyperlink: Sign Up
                                Text: Sign Up
            Custom
                Custom
                    Custom
                        Custom
                            Custom
                                Edit: Search...
                                Button
                                    Custom
                                        Text: ?
                    List
                        Custom
                        ListItem
                            Hyperlink: Browse
                                Text: Browse
                            List
                                ListItem
                                    Hyperlink: Forums
                                        Text: Forums
                                ListItem
                                    Hyperlink: Downloads
                                        Text: Downloads
                                ListItem
                                    Hyperlink: Calendar
                                        Text: Calendar
                                ListItem
                                    Hyperlink: Forum Rules
                                        Text: Forum Rules
                        ListItem
                            Hyperlink: Wiki
                                Text: Wiki
                        ListItem
                            Hyperlink: AutoIt Resources 
                                Text: AutoIt Resources 
                                Custom
                                    Text: ?
                        ListItem
                            Hyperlink: FAQ
                                Text: FAQ
                        ListItem
                            Hyperlink: Our Picks
                                Text: Our Picks
        Custom
            Table
                Custom
                    Custom
                        List
                            ListItem
                                Hyperlink: All Activity
                                    Text: ?
                                    Text:  
                                    Text: All Activity
                        List
                            ListItem
                                Hyperlink:  Home 
                                    Custom
                                        Text: ?
                                    Text:  Home 
                                    Custom
                                        Text: ?
                            ListItem
                                Hyperlink: AutoIt v3 
                                    Text: AutoIt v3 
                                    Custom
                                        Text: ?
                            ListItem
                                Hyperlink: AutoIt Help and Support 
                                    Text: AutoIt Help and Support 
                                    Custom
                                        Text: ?
                            ListItem
                                Hyperlink: AutoIt General Help and Support 
                                    Text: AutoIt General Help and Support 
                                    Custom
                                        Text: ?
                            ListItem
                                Text: Using DllCall() in UIASpy
                    Custom
                        Hyperlink
                        List
                            ListItem
                                Custom
                                    Custom
                                        Custom
                                            Document
                                                Document
                                                    Custom
                                                        Custom
                                                            Custom
                                                                Custom
                                                                    Custom
                                                                        Custom: mulesoft.com
                                                                            Hyperlink: Download Now - RESTful API
                                                                                Text: Download Now - RESTful API
                                                                        Custom
                                                                            Hyperlink: Great Practices Around How To Plan, Design, Build, Manage and Share Your APIs. mulesoft.com
                                                                                Text: Great Practices Around How To Plan, Design, Build, Manage and Share Your APIs. mulesoft.com
                                                                        Hyperlink: OPEN
                                                                            Text: OPEN
                                                        Custom
                                                        Document
                                                            Document
                        Custom
                            Custom
                                Custom
                                    Text: ?
                                Hyperlink: Sign in to follow this
                                    Text: Sign in to follow this
                                Text:   
                                Custom
                                    Hyperlink: Followers
                                        Text: Followers
                                    Hyperlink: 1
                                        Text: 1
                                        Custom
                            Custom
                            Hyperlink: rmckay
                                Image: rmckay
                            Custom: Using DllCall() in UIASpy
                                Table
                                    Text: Using DllCall() in UIASpy
                            Custom
                                Text: By 
                                Hyperlink: rmckay
                                    Text: rmckay
                                Text: , 
                                Edit: 04/13/2020 08:40 PM
                                    Text: Monday at 08:40 PM
                                Text:  in 
                                Hyperlink: AutoIt General Help and Support
                                    Text: AutoIt General Help and Support
                                Custom: 

                            List
                                ListItem
                                    Hyperlink: dllcall()
                                        Custom
                                        Text: dllcall()
                                        Custom
                                ListItem
                                    Hyperlink: uiautomation
                                        Custom
                                        Text: uiautomation
                                        Custom
                        List
                        Custom
                            Custom
                                Custom
                                    Hyperlink
                                    Document
                                        Custom
                                            Custom
                                                Hyperlink: rmckay
                                                    Text: rmckay
                                            List
                                                ListItem
                                                    Text: Seeker
                                                ListItem
                                                    Hyperlink: rmckay
                                                        Image: rmckay
                                                ListItem
                                                    Text: Active Members
                                                ListItem
                                                    Hyperlink:  0
                                                        Custom
                                                            Text: ?
                                                        Text:  0
                                                ListItem
                                                    Text: 33 posts
                                        Custom
                                            Custom
                                                Custom
                                                    List
                                                        ListItem
                                                            Hyperlink: Share this post
                                                                Custom
                                                                    Text: ?
                                                Custom
                                                    Hyperlink: Posted 
                                                        Text: Posted 
                                                        Edit: 04/13/2020 08:40 PM
                                                            Text: Monday at 08:40 PM
                                                    Text:  
                                                    Text: (edited)
                                                Custom
                                                    Table
                                                        Custom
                                                            Text: I'm trying to understand the use of TreeWalker and DllCall()s.  My ultimate goal is to use TreeWalker to list all children of webpages.  I've been working through the files for UIASpy to understand the logic.  After a weeks worth of searching for examples I'm still stuck on the reason for the repeated use of DllCalls in most of the functions.  Here is an example - the function 'UIASpy_CheckWindows()' (located in UIASpy_Elements.au3) is called from file UIASpy_Gui.au3.  In the function the following DllCall is used:
                                                        Edit
                                                            Hyperlink: DllCall
                                                                Text: DllCall
                                                            Text: (
                                                            Text:  
                                                            Text: "user32.dll"
                                                            Text: ,
                                                            Text:  
                                                            Text: "lresult"
                                                            Text: ,
                                                            Text:  
                                                            Text: "SendMessageW"
                                                            Text: ,
                                                            Text:  
                                                            Text: "hwnd"
                                                            Text: ,
                                                            Text:  
                                                            Text: $hTV
                                                            Text: ,
                                                            Text:  
                                                            Text: "uint"
                                                            Text: ,
                                                            Text:  
                                                            Text: $TVM_GETITEMW
                                                            Text: ,
                                                            Text:  
                                                            Text: "wparam"
                                                            Text: ,
                                                            Text:  
                                                            Text: 0
                                                            Text: ,
                                                            Text:  
                                                            Text: "struct*"
                                                            Text: ,
                                                            Text:  
                                                            Text: $tItem
                                                            Text:  
                                                            Text: )
                                                        Custom
                                                            Text: I understand that the function 'SendMessageW' in 'user32.dll' sends a message to the window $hTV.  The message is '$TVM_GETNEXTITEM' and '$tItem' is a struct with additional information - Microsoft Doc -
                                                            Hyperlink: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessagew
                                                                Text: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessagew
                                                            Text: .  The window $hTV is created in UIASpy_Gui.au3 and that's where I get lost.  Is there code in UIASpy_Gui.au3 that handles this message?  I don't know what to look for.  This procedure - Function called that contains DllCall (SendMessage) is repeatedly used.  Thanks in advance.
                                                        Text: Edited 
                                                        Edit: 04/13/2020 08:42 PM
                                                            Text: Monday at 08:42 PM
                                                        Text:  by rmckay
                                                        Custom: 

                                                        Text: Typo
                                                    Custom
                                                        Custom
                                                    List
                            Hyperlink
                            Custom
                                Custom: Create an account or sign in to comment
                                    Text: Create an account or sign in to comment
                                Custom
                                    Text: You need to be a member in order to leave a comment
                                Table
                                Custom: Create an account
                                    Text: Create an account
                                Custom
                                    Text: Sign up for a new account in our community. It's easy!
                                Hyperlink: Register a new account
                                    Text: Register a new account
                                Custom: Sign in
                                    Text: Sign in
                                Custom
                                    Text: Already have an account? Sign in here.
                                Hyperlink: Sign In Now
                                    Text: Sign In Now
                                Table
                        Table
                            Table
                            Custom
                                Hyperlink: GO TO TOPIC LISTING
                                    Text: GO TO TOPIC LISTING
                                    Custom
                                        Text: ?
                        Separator
                        List
                            ListItem
                                Hyperlink: Share on LinkedIn
                                    Custom
                                        Text: ?
                            ListItem
                                Hyperlink: Share on Twitter
                                    Custom
                                        Text: ?
                            ListItem
                                Hyperlink: Share on Facebook
                                    Custom
                                        Text: ?
                            ListItem
                                Hyperlink: Share on Reddit
                                    Custom
                                        Text: ?
                        List
                            ListItem
                                Custom: Similar Content
                                    Text: Similar Content
                                List
                                    ListItem
                                        Custom
                                            Hyperlink: rmckay
                                                Image: rmckay
                                        Table
                                            Hyperlink: Retrieve items from combo box with FindAll()
                                                Text: Retrieve items from combo box with FindAll()
                                        Text: By 
                                        Hyperlink: rmckay
                                            Text: rmckay
                                        Custom: 

                                        Text: Hello,
                                        Custom: 

                                        Text: I'm trying to set a value in a combo box on a Chrome web page.  I've checked that the Chrome://accessibility is on and have checked to see that it's working with one of @LarsJ's scripts.  I've...
                                    ListItem
                                        Custom
                                            Hyperlink: rmckay
                                                Image: rmckay
                                        Table
                                            Hyperlink: Need help with $UIA_NativeWindowHandlePropertyId
                                                Text: Need help with $UIA_NativeWindowHandlePropertyId
                                        Text: By 
                                        Hyperlink: rmckay
                                            Text: rmckay
                                        Custom: 

                                        Text: Hello,
                                        Custom: 

                                        Text: I'm trying to automate the settings of combo boxes in a program. The combo boxes are child windows of two different windows.  They have the similar but different titles so I can locate...
                                    ListItem
                                        Custom
                                            Hyperlink: rmckay
                                                Image: rmckay
                                        Table
                                            Hyperlink: Using SetValue() on Slider Control
                                                Text: Using SetValue() on Slider Control
                                        Text: By 
                                        Hyperlink: rmckay
                                            Text: rmckay
                                        Custom: 

                                        Text: I'm trying to set the slider in a window using RangeValuePattern.SetValue().  The window is used to set the start point for replaying market data in the app NinjaTrader 8. When using the Action window in Inspect.exe I can set a value and the slider responds.  When I run a script that selects the slider and uses .SetValue() with the same value the slider does not move.  I've tried giving...
                                    ListItem
                                        Custom
                                            Hyperlink: Earthshine
                                                Image: Earthshine
                                        Table
                                            Hyperlink: Fun with TreeWalkers
                                                Text: Fun with TreeWalkers
                                        Text: By 
                                        Hyperlink: Earthshine
                                            Text: Earthshine
                                        Custom: 

                                        Text: So, I made this console app--using TreeWalkers of course to walk the UI Tree-- that starts at the root and looks for enabled, active controls--and in piping that to a file, I got this (edited, lots of controls in that list), above. LOL, so, those commands that are stored in memory are control elements! Sweet. this UIAutomation stuff is awesome. @junkew got me into this, blame his...
                                    ListItem
                                        Custom
                                            Hyperlink: souldjer777
                                                Image: souldjer777
                                        Table
                                            Hyperlink: SetFocus on list item - Don't know what I'm doing wrong
                                                Text: SetFocus on list item - Don't know what I'm doing wrong
                                        Text: By 
                                        Hyperlink: souldjer777
                                            Text: souldjer777
                                        Custom: 

                                        Text: Good Morning,
                                        Custom: 

                                        Text: I'm trying to use the code I had previously to select an item from a list. I believe I want to "setfocus". However, I'm getting and error and I believe it's my code. I don't know what Global...
                            ListItem
                                Custom
                                    Custom
                                        Custom
                                            Document
                                                Document
                                                    Custom
                                                        Custom
                                                            Custom
                                                                Custom
                                                                    Custom
                                                                        Custom: mulesoft.com
                                                                            Hyperlink: Modern Design Techniques
                                                                                Text: Modern Design Techniques
                                                                        Custom
                                                                            Hyperlink: Great Practices Around How To Plan, Design, Build, Manage and Share Your APIs.
                                                                                Text: Great Practices Around How To Plan, Design, Build, Manage and Share Your APIs.
                                                                        Custom: mulesoft.com
                                                                            Hyperlink: mulesoft.com
                                                                                Text: mulesoft.com
                                                                        Hyperlink: OPEN
                                                                            Text: OPEN
                                                        Custom
                                                        Document
                                                            Document
                    Custom
                        List
                            ListItem
                                Hyperlink: All Activity
                                    Text: ?
                                    Text:  
                                    Text: All Activity
                        List
                            ListItem
                                Hyperlink:  Home 
                                    Custom
                                        Text: ?
                                    Text:  Home 
                                    Custom
                                        Text: ?
                            ListItem
                                Hyperlink: AutoIt v3 
                                    Text: AutoIt v3 
                                    Custom
                                        Text: ?
                            ListItem
                                Hyperlink: AutoIt Help and Support 
                                    Text: AutoIt Help and Support 
                                    Custom
                                        Text: ?
                            ListItem
                                Hyperlink: AutoIt General Help and Support 
                                    Text: AutoIt General Help and Support 
                                    Custom
                                        Text: ?
                            ListItem
                                Text: Using DllCall() in UIASpy
        Custom
            Custom
                List
                    ListItem
                        Hyperlink: Theme 
                            Text: Theme 
                            Custom
                                Text: ?
                    ListItem
                        Hyperlink: Privacy Policy
                            Text: Privacy Policy
                    ListItem
                        Hyperlink: Contact Us
                            Text: Contact Us
                Custom
                    Custom
                    Hyperlink: Powered by Invision Community
                        Text: Powered by Invision Community
TitleBar
    MenuBar: System
        MenuItem: System
    Button: Minimize
    Button: Maximize
    Button: Close
Pane: Google Chrome
    Pane
        Button: Minimize
        Button: Maximize
        Button: Restore
        Button: Close
    Pane
        Pane
            Pane
                Tab
                    TabItem: Using DllCall() in UIASpy - AutoIt General Help and Support - AutoIt Forums
                        Button: Close
                    TabItem: Accessibility Internals
                        Button: Close
                    Button: New Tab
            Pane
                Button: Back
                Button: Forward
                Button: Reload
                Custom
                    Pane
                    MenuItem: View site information
                        Custom
                    Edit: Address and search bar
                    Pane
                        Button: Bookmark this tab
                            Custom
                Custom: Extensions
                    Button: Blank New Tab Page
                    Separator
                    Pane
                Button: Current user
                Button: Chrome
            Pane
        Pane
            Document: Using DllCall() in UIASpy - AutoIt General Help and Support - AutoIt Forums
                Custom
                    Custom
                        Custom
                            Custom
                                Hyperlink: AutoIt Logo
                                    Image: AutoIt Logo
                                List
                                    ListItem
                                        Hyperlink: Existing user? Sign In  
                                            Text: Existing user? Sign In  
                                            Custom
                                                Text: ?
                                    ListItem
                                        Hyperlink: Sign Up
                                            Text: Sign Up
                        Custom
                            Custom
                                Custom
                                    Custom
                                        Custom
                                            Edit: Search...
                                            Button
                                                Custom
                                                    Text: ?
                                List
                                    Custom
                                    ListItem
                                        Hyperlink: Browse
                                            Text: Browse
                                        List
                                            ListItem
                                                Hyperlink: Forums
                                                    Text: Forums
                                            ListItem
                                                Hyperlink: Downloads
                                                    Text: Downloads
                                            ListItem
                                                Hyperlink: Calendar
                                                    Text: Calendar
                                            ListItem
                                                Hyperlink: Forum Rules
                                                    Text: Forum Rules
                                    ListItem
                                        Hyperlink: Wiki
                                            Text: Wiki
                                    ListItem
                                        Hyperlink: AutoIt Resources 
                                            Text: AutoIt Resources 
                                            Custom
                                                Text: ?
                                    ListItem
                                        Hyperlink: FAQ
                                            Text: FAQ
                                    ListItem
                                        Hyperlink: Our Picks
                                            Text: Our Picks
                    Custom
                        Table
                            Custom
                                Custom
                                    List
                                        ListItem
                                            Hyperlink: All Activity
                                                Text: ?
                                                Text:  
                                                Text: All Activity
                                    List
                                        ListItem
                                            Hyperlink:  Home 
                                                Custom
                                                    Text: ?
                                                Text:  Home 
                                                Custom
                                                    Text: ?
                                        ListItem
                                            Hyperlink: AutoIt v3 
                                                Text: AutoIt v3 
                                                Custom
                                                    Text: ?
                                        ListItem
                                            Hyperlink: AutoIt Help and Support 
                                                Text: AutoIt Help and Support 
                                                Custom
                                                    Text: ?
                                        ListItem
                                            Hyperlink: AutoIt General Help and Support 
                                                Text: AutoIt General Help and Support 
                                                Custom
                                                    Text: ?
                                        ListItem
                                            Text: Using DllCall() in UIASpy
                                Custom
                                    Hyperlink
                                    List
                                        ListItem
                                            Custom
                                                Custom
                                                    Custom
                                                        Document
                                                            Document
                                                                Custom
                                                                    Custom
                                                                        Custom
                                                                            Custom
                                                                                Custom
                                                                                    Custom: mulesoft.com
                                                                                        Hyperlink: Download Now - RESTful API
                                                                                            Text: Download Now - RESTful API
                                                                                    Custom
                                                                                        Hyperlink: Great Practices Around How To Plan, Design, Build, Manage and Share Your APIs. mulesoft.com
                                                                                            Text: Great Practices Around How To Plan, Design, Build, Manage and Share Your APIs. mulesoft.com
                                                                                    Hyperlink: OPEN
                                                                                        Text: OPEN
                                                                    Custom
                                                                    Document
                                                                        Document
                                    Custom
                                        Custom
                                            Custom
                                                Text: ?
                                            Hyperlink: Sign in to follow this
                                                Text: Sign in to follow this
                                            Text:   
                                            Custom
                                                Hyperlink: Followers
                                                    Text: Followers
                                                Hyperlink: 1
                                                    Text: 1
                                                    Custom
                                        Custom
                                        Hyperlink: rmckay
                                            Image: rmckay
                                        Custom: Using DllCall() in UIASpy
                                            Table
                                                Text: Using DllCall() in UIASpy
                                        Custom
                                            Text: By 
                                            Hyperlink: rmckay
                                                Text: rmckay
                                            Text: , 
                                            Edit: 04/13/2020 08:40 PM
                                                Text: Monday at 08:40 PM
                                            Text:  in 
                                            Hyperlink: AutoIt General Help and Support
                                                Text: AutoIt General Help and Support
                                            Custom: 

                                        List
                                            ListItem
                                                Hyperlink: dllcall()
                                                    Custom
                                                    Text: dllcall()
                                                    Custom
                                            ListItem
                                                Hyperlink: uiautomation
                                                    Custom
                                                    Text: uiautomation
                                                    Custom
                                    List
                                    Custom
                                        Custom
                                            Custom
                                                Hyperlink
                                                Document
                                                    Custom
                                                        Custom
                                                            Hyperlink: rmckay
                                                                Text: rmckay
                                                        List
                                                            ListItem
                                                                Text: Seeker
                                                            ListItem
                                                                Hyperlink: rmckay
                                                                    Image: rmckay
                                                            ListItem
                                                                Text: Active Members
                                                            ListItem
                                                                Hyperlink:  0
                                                                    Custom
                                                                        Text: ?
                                                                    Text:  0
                                                            ListItem
                                                                Text: 33 posts
                                                    Custom
                                                        Custom
                                                            Custom
                                                                List
                                                                    ListItem
                                                                        Hyperlink: Share this post
                                                                            Custom
                                                                                Text: ?
                                                            Custom
                                                                Hyperlink: Posted 
                                                                    Text: Posted 
                                                                    Edit: 04/13/2020 08:40 PM
                                                                        Text: Monday at 08:40 PM
                                                                Text:  
                                                                Text: (edited)
                                                            Custom
                                                                Table
                                                                    Custom
                                                                        Text: I'm trying to understand the use of TreeWalker and DllCall()s.  My ultimate goal is to use TreeWalker to list all children of webpages.  I've been working through the files for UIASpy to understand the logic.  After a weeks worth of searching for examples I'm still stuck on the reason for the repeated use of DllCalls in most of the functions.  Here is an example - the function 'UIASpy_CheckWindows()' (located in UIASpy_Elements.au3) is called from file UIASpy_Gui.au3.  In the function the following DllCall is used:
                                                                    Edit
                                                                        Hyperlink: DllCall
                                                                            Text: DllCall
                                                                        Text: (
                                                                        Text:  
                                                                        Text: "user32.dll"
                                                                        Text: ,
                                                                        Text:  
                                                                        Text: "lresult"
                                                                        Text: ,
                                                                        Text:  
                                                                        Text: "SendMessageW"
                                                                        Text: ,
                                                                        Text:  
                                                                        Text: "hwnd"
                                                                        Text: ,
                                                                        Text:  
                                                                        Text: $hTV
                                                                        Text: ,
                                                                        Text:  
                                                                        Text: "uint"
                                                                        Text: ,
                                                                        Text:  
                                                                        Text: $TVM_GETITEMW
                                                                        Text: ,
                                                                        Text:  
                                                                        Text: "wparam"
                                                                        Text: ,
                                                                        Text:  
                                                                        Text: 0
                                                                        Text: ,
                                                                        Text:  
                                                                        Text: "struct*"
                                                                        Text: ,
                                                                        Text:  
                                                                        Text: $tItem
                                                                        Text:  
                                                                        Text: )
                                                                    Custom
                                                                        Text: I understand that the function 'SendMessageW' in 'user32.dll' sends a message to the window $hTV.  The message is '$TVM_GETNEXTITEM' and '$tItem' is a struct with additional information - Microsoft Doc -
                                                                        Hyperlink: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessagew
                                                                            Text: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-sendmessagew
                                                                        Text: .  The window $hTV is created in UIASpy_Gui.au3 and that's where I get lost.  Is there code in UIASpy_Gui.au3 that handles this message?  I don't know what to look for.  This procedure - Function called that contains DllCall (SendMessage) is repeatedly used.  Thanks in advance.
                                                                    Text: Edited 
                                                                    Edit: 04/13/2020 08:42 PM
                                                                        Text: Monday at 08:42 PM
                                                                    Text:  by rmckay
                                                                    Custom: 

                                                                    Text: Typo
                                                                Custom
                                                                    Custom
                                                                List
                                        Hyperlink
                                        Custom
                                            Custom: Create an account or sign in to comment
                                                Text: Create an account or sign in to comment
                                            Custom
                                                Text: You need to be a member in order to leave a comment
                                            Table
                                            Custom: Create an account
                                                Text: Create an account
                                            Custom
                                                Text: Sign up for a new account in our community. It's easy!
                                            Hyperlink: Register a new account
                                                Text: Register a new account
                                            Custom: Sign in
                                                Text: Sign in
                                            Custom
                                                Text: Already have an account? Sign in here.
                                            Hyperlink: Sign In Now
                                                Text: Sign In Now
                                            Table
                                    Table
                                        Table
                                        Custom
                                            Hyperlink: GO TO TOPIC LISTING
                                                Text: GO TO TOPIC LISTING
                                                Custom
                                                    Text: ?
                                    Separator
                                    List
                                        ListItem
                                            Hyperlink: Share on LinkedIn
                                                Custom
                                                    Text: ?
                                        ListItem
                                            Hyperlink: Share on Twitter
                                                Custom
                                                    Text: ?
                                        ListItem
                                            Hyperlink: Share on Facebook
                                                Custom
                                                    Text: ?
                                        ListItem
                                            Hyperlink: Share on Reddit
                                                Custom
                                                    Text: ?
                                    List
                                        ListItem
                                            Custom: Similar Content
                                                Text: Similar Content
                                            List
                                                ListItem
                                                    Custom
                                                        Hyperlink: rmckay
                                                            Image: rmckay
                                                    Table
                                                        Hyperlink: Retrieve items from combo box with FindAll()
                                                            Text: Retrieve items from combo box with FindAll()
                                                    Text: By 
                                                    Hyperlink: rmckay
                                                        Text: rmckay
                                                    Custom: 

                                                    Text: Hello,
                                                    Custom: 

                                                    Text: I'm trying to set a value in a combo box on a Chrome web page.  I've checked that the Chrome://accessibility is on and have checked to see that it's working with one of @LarsJ's scripts.  I've...
                                                ListItem
                                                    Custom
                                                        Hyperlink: rmckay
                                                            Image: rmckay
                                                    Table
                                                        Hyperlink: Need help with $UIA_NativeWindowHandlePropertyId
                                                            Text: Need help with $UIA_NativeWindowHandlePropertyId
                                                    Text: By 
                                                    Hyperlink: rmckay
                                                        Text: rmckay
                                                    Custom: 

                                                    Text: Hello,
                                                    Custom: 

                                                    Text: I'm trying to automate the settings of combo boxes in a program. The combo boxes are child windows of two different windows.  They have the similar but different titles so I can locate...
                                                ListItem
                                                    Custom
                                                        Hyperlink: rmckay
                                                            Image: rmckay
                                                    Table
                                                        Hyperlink: Using SetValue() on Slider Control
                                                            Text: Using SetValue() on Slider Control
                                                    Text: By 
                                                    Hyperlink: rmckay
                                                        Text: rmckay
                                                    Custom: 

                                                    Text: I'm trying to set the slider in a window using RangeValuePattern.SetValue().  The window is used to set the start point for replaying market data in the app NinjaTrader 8. When using the Action window in Inspect.exe I can set a value and the slider responds.  When I run a script that selects the slider and uses .SetValue() with the same value the slider does not move.  I've tried giving...
                                                ListItem
                                                    Custom
                                                        Hyperlink: Earthshine
                                                            Image: Earthshine
                                                    Table
                                                        Hyperlink: Fun with TreeWalkers
                                                            Text: Fun with TreeWalkers
                                                    Text: By 
                                                    Hyperlink: Earthshine
                                                        Text: Earthshine
                                                    Custom: 

                                                    Text: So, I made this console app--using TreeWalkers of course to walk the UI Tree-- that starts at the root and looks for enabled, active controls--and in piping that to a file, I got this (edited, lots of controls in that list), above. LOL, so, those commands that are stored in memory are control elements! Sweet. this UIAutomation stuff is awesome. @junkew got me into this, blame his...
                                                ListItem
                                                    Custom
                                                        Hyperlink: souldjer777
                                                            Image: souldjer777
                                                    Table
                                                        Hyperlink: SetFocus on list item - Don't know what I'm doing wrong
                                                            Text: SetFocus on list item - Don't know what I'm doing wrong
                                                    Text: By 
                                                    Hyperlink: souldjer777
                                                        Text: souldjer777
                                                    Custom: 

                                                    Text: Good Morning,
                                                    Custom: 

                                                    Text: I'm trying to use the code I had previously to select an item from a list. I believe I want to "setfocus". However, I'm getting and error and I believe it's my code. I don't know what Global...
                                        ListItem
                                            Custom
                                                Custom
                                                    Custom
                                                        Document
                                                            Document
                                                                Custom
                                                                    Custom
                                                                        Custom
                                                                            Custom
                                                                                Custom
                                                                                    Custom: mulesoft.com
                                                                                        Hyperlink: Modern Design Techniques
                                                                                            Text: Modern Design Techniques
                                                                                    Custom
                                                                                        Hyperlink: Great Practices Around How To Plan, Design, Build, Manage and Share Your APIs.
                                                                                            Text: Great Practices Around How To Plan, Design, Build, Manage and Share Your APIs.
                                                                                    Custom: mulesoft.com
                                                                                        Hyperlink: mulesoft.com
                                                                                            Text: mulesoft.com
                                                                                    Hyperlink: OPEN
                                                                                        Text: OPEN
                                                                    Custom
                                                                    Document
                                                                        Document
                                Custom
                                    List
                                        ListItem
                                            Hyperlink: All Activity
                                                Text: ?
                                                Text:  
                                                Text: All Activity
                                    List
                                        ListItem
                                            Hyperlink:  Home 
                                                Custom
                                                    Text: ?
                                                Text:  Home 
                                                Custom
                                                    Text: ?
                                        ListItem
                                            Hyperlink: AutoIt v3 
                                                Text: AutoIt v3 
                                                Custom
                                                    Text: ?
                                        ListItem
                                            Hyperlink: AutoIt Help and Support 
                                                Text: AutoIt Help and Support 
                                                Custom
                                                    Text: ?
                                        ListItem
                                            Hyperlink: AutoIt General Help and Support 
                                                Text: AutoIt General Help and Support 
                                                Custom
                                                    Text: ?
                                        ListItem
                                            Text: Using DllCall() in UIASpy
                    Custom
                        Custom
                            List
                                ListItem
                                    Hyperlink: Theme 
                                        Text: Theme 
                                        Custom
                                            Text: ?
                                ListItem
                                    Hyperlink: Privacy Policy
                                        Text: Privacy Policy
                                ListItem
                                    Hyperlink: Contact Us
                                        Text: Contact Us
                            Custom
                                Custom
                                Hyperlink: Powered by Invision Community
                                    Text: Powered by Invision Community
        Pane

 

Posted

@LarsJ,  Thanks.  Like I said, I've been trying to understand recursive use of Treewalker() for what seems like weeks.  I've still got to study your code in detail but I'm finally headed in the right direction.

Posted
Posted

Hi @LarsJ,

As always, I appreciate the help.  I thought I was starting to have a decent grasp of AutoIt.  I'm beginning to realize that I've just scratched the surface.  It'll take me a while to digest all of this - new territory.  Will get back to you if I get stumped again.  Thanks

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
×
×
  • Create New...