Get Process -> Get Children -> How do I get the information of buttons, sliders, listview on a different application.

I know how to capture Itunes ID and get information and child processes  then I want to be able to actually read all the items in the list view.  If possible.

I'm looking to enumerate to the max and get information on a different application.  Like how many buttons, sliders, listview and its detial.




I start with
        Dim item As ListViewItem
        For Each p As Process In Process.GetProcesses
            item = New ListViewItem
            item.Text = p.Id
            item.SubItems.Add(p.ProcessName)
            Me.ListView1.Items.Add(item)
        Next
Or for more information
 
        Dim p As Process
        Dim items(5) As String
        Dim r As New RECT()
 
        ListAll.Enabled = False
        ListView1.BeginUpdate()
        ListView1.Items.Clear()
        For Each p In Process.GetProcesses
            items(0) = p.ProcessName
            items(1) = p.Id.ToString
            If Not IntPtr.Zero.Equals(p.MainWindowHandle) Then
                items(2) = p.MainWindowHandle.ToString
                If GetWindowRect(p.MainWindowHandle, r) <> 0 Then
                    If IsIconic(p.MainWindowHandle) = 0 Then
                        items(3) = "(" & r.Left.ToString & ", " & r.Top.ToString & ")"
                        items(4) = (r.Right - r.Left).ToString & "x" & (r.Bottom - r.Top).ToString
                    Else
                        items(3) = "[Minimized]"
                        items(4) = "[Minimized]"
                    End If
                Else
                    items(3) = "[Error]"
                    items(4) = "[Error]"
                End If
                items(5) = p.MainWindowTitle
            Else
                items(2) = ""
                items(3) = ""
                items(4) = ""
                items(5) = ""
            End If
 
            ListView1.Items.Add(New ListViewItem(items))

Open in new window

LVL 1
vaultworldAsked:
Who is Participating?
 
Luis PérezConnect With a Mentor Software Architect in .NetCommented:
If you want to know what controls are inside any Window, the you can use the GetWindow Win32 API function. With this function you can obtain all the hWnd of the child window of any parent window, and with recursivity, you can finally obtain all the hWnd contained in a Window and all of their contained sub-windows (i.e. controls).

For each hWnd you obtain, you can use GetClassName to get the class name of the window. With this data you can know if the window is a button, a slider, a listview, etc.

Hope that helps.
0
 
Bob LearnedConnect With a Mentor Commented:
It is better to use EnumerateChildWindows.  It is possible for GetWindow can get into a state where it will go into an infinite loop.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.