• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 243
  • Last Modified:

Control References

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
scottmichael2
Asked:
scottmichael2
  • 4
  • 2
3 Solutions
 
AlexFMCommented:
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
 
scottmichael2Author Commented:
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
 
BBK_Commented:
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
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
scottmichael2Author Commented:
"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
 
BBK_Commented:
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
 
scottmichael2Author Commented:
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
 
scottmichael2Author Commented:
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

[Webinar] Improve your customer journey

A positive customer journey is important in attracting and retaining business. To improve this experience, you can use Google Maps APIs to increase checkout conversions, boost user engagement, and optimize order fulfillment. Learn how in this webinar presented by Dito.

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now