Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 325
  • Last Modified:

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

0
vaultworld
Asked:
vaultworld
2 Solutions
 
Luis PérezSoftware 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 LearnedCommented:
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

Featured Post

NEW Veeam Agent for Microsoft Windows

Backup and recover physical and cloud-based servers and workstations, as well as endpoint devices that belong to remote users. Avoid downtime and data loss quickly and easily for Windows-based physical or public cloud-based workloads!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now