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
Solved

Control References

Posted on 2006-07-18
8
230 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
  • 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
Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

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.

 
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: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering 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

This article aims to explain the working of CircularLogArchiver. This tool was designed to solve the buildup of log file in cases where systems do not support circular logging or where circular logging is not enabled
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…

856 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