Solved

Control References

Posted on 2006-07-18
8
233 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
Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

 
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

On Demand Webinar: Networking for the Cloud Era

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

Question has a verified solution.

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

Introduction This article series is supposed to shed some light on the use of IDisposable and objects that inherit from it. In essence, a more apt title for this article would be: using (IDisposable) {}. I’m just not sure how many people would ge…
Exception Handling is in the core of any application that is able to dignify its name. In this article, I'll guide you through the process of writing a DRY (Don't Repeat Yourself) Exception Handling mechanism, using Aspect Oriented Programming.
In this video, viewers are given an introduction to using the Windows 10 Snipping Tool, how to quickly locate it when it's needed and also how make it always available with a single click of a mouse button, by pinning it to the Desktop Task Bar. Int…
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …

717 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