Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

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
?
321 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

Question has a verified solution.

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

Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
A long time ago (May 2011), I have written an article showing you how to create a DLL using Visual Studio 2005 to be hosted in SQL Server 2005. That was valid at that time and it is still valid if you are still using these versions. You can still re…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…
Suggested Courses

688 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