Solved

Control References

Posted on 2006-07-18
8
231 Views
Last Modified: 2010-04-16
How do I get a reference to a control on an application separate from the one I'm writing (non-Microsoft, meaning not MS Word, etc.)?

Here's what I need to do...
1)  Get a list of all Windows applications running (all visible).
2)  Get a list of controls from a particular application (selected from #1 above).
3)  Get a reference to one of the controls in #2 above.
4)  Get and set the value in the control.
5)  Keep track of which control has focus.

Thanks for any suggestions!!
0
Comment
Question by:scottmichael2
[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
  • 4
  • 2
8 Comments
 
LVL 48

Assisted Solution

by:AlexFM
AlexFM earned 150 total points
ID: 17129831
For .NET applications you can use Managed Spy Library:
http://msdn.microsoft.com/msdnmag/issues/06/04/ManagedSpy/

For unmanaged applications you need to write this in unmanaged C++ or using PInvoke API calls from C#.
0
 
LVL 1

Author Comment

by:scottmichael2
ID: 17131324
Does anyone have an example of doing this is C# (for unmanaged apps)?  I believe most of what I'm dealing with will be unmanaged.  Thanks!
0
 
LVL 3

Accepted Solution

by:
BBK_ earned 350 total points
ID: 17146457
I don't have the sample code for it, but i can guide u


For step1
you can use "EnumWindows" API which will give you all the windows opened in a callback function.

For Step2

You have to iterate thru the selected window only thru the Handle of the selected window in step1

For Step3 & Step4 & Step5
  You can't create an instance of a control,which is in another window, rather it that window is a control that has window Handle then you can manipulate that control's property

eg: if you want to change the text, use windows API SetWindowText().
If the control that you are looking does not have Window handle then you can't acces to that control.

Unless you have the Window handle of any contols, you can't do anything to that.




0
SharePoint Admin?

Enable Your Employees To Focus On The Core With Intuitive Onscreen Guidance That is With You At The Moment of Need.

 
LVL 1

Author Comment

by:scottmichael2
ID: 17146793
"If the control that you are looking does not have Window handle then you can't acces to that control."

I guess this means Java apps are out of the question, right?  All I can seem to get is a reference to the parent Window (no children are exposed).  Any ideas on how to tackle this one?
0
 
LVL 3

Assisted Solution

by:BBK_
BBK_ earned 350 total points
ID: 17151549
There is an easy way to find to see a window has a handle or not,

I think you have Spy ++ application in your machine(Which comes with Visual Studio).
Using this we can find the Controls inside a window.

You try with Spy++, that will give you a good understainding about the Child window and it's handle
0
 
LVL 1

Author Comment

by:scottmichael2
ID: 17186854
It looks like Spy simply gives you the parent Window information.  Nothing internal seems to be captured (just the parent hwnd and global mouse, keyboard info).
0
 
LVL 1

Author Comment

by:scottmichael2
ID: 17186866
Let me clarify that last post - this seems to be true with Java applications.  With Windows applications I can get the hwnd of the individual Windows as well (such as controls).
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Summary: Persistence is the capability of an application to store the state of objects and recover it when necessary. This article compares the two common types of serialization in aspects of data access, readability, and runtime cost. A ready-to…
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.
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

730 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