Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

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

Posted on 2008-10-05
2
Medium Priority
?
324 Views
Last Modified: 2012-06-27
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
Comment
Question by:vaultworld
2 Comments
 
LVL 25

Accepted Solution

by:
Luis Pérez earned 1000 total points
ID: 22648835
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
 
LVL 96

Assisted Solution

by:Bob Learned
Bob Learned earned 1000 total points
ID: 22650529
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

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
Suggested Courses

971 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question