Window Finder OLE Control

Visual C++ 4.0 Project

Window Finder is an ActiveX control similar to Spy++'s Window Finder control. The user can drag the circle over a window (a border will be drawn around the window) to select it, and your program can figure out what the handle of the window is.

To use the Window Finder ActiveX control, you will first need to register it using regsvr32 (type regsvr32 winfinder.ocx at the command line). In the Insert Control dialog, the control will be named "WinFinder Control".

Changes From 1.0 to 2.0
  • No global callback function needed, a WM_USER + 100 message is sent to parent window when selection changes
  • Demo project changes
  • Minor bugfixes

In the demo project, "targetWindow" is shown in the static control, it is updated in the callback function.

Note: The variable type for the catagory targetWindow is "long" because it seems that I could only use certain varible types, and HWND was not one of them.

Notification Message

When the window selection changes, the WinFinder control sends a WM_CHAR + 100 message to it's parent window (usually a dialog). The LPARAM parameter contains the new selected window handle.

This replaces the callback function, but for compatability the callback function can still be used (see the next section). If you need more flexibility, use the callback function. Callback Function

To set a callback function that is called when the selected window c changes, you have to send a WM_USER + 100 message to the WinFinder control. LPARAM should be the address to a structure that looks like this:


typedef struct

'pfn' should point to the address of the callback function. The WPARAM parameter to the message should be zero if you want the callback function set to the one specified in the LPARAM structure, or zero if you don't wan't to set it. The return value of the message handler is always the address of the callback function, so setting WPARAM to a non-zero value can be used to retrive the address to the function.

The callback function should return a value of "0" to allow the window to be selected, or "1" to ignore the window (this is ueful for ignoring the dialog that the control is in, like Spy++ does). The declaration of the callback function should be similar to:

int WindowFinderSelected(HWND hWnd);

'hWnd' is the handle of the currently selected window, which can also be retreived by the "targetWindow" property.

The default callback function allows all windows to be selected.

The sample project displays the the window handle of the window that is selected by the Window Finder Control. The callback function sets the caption of the window handle to the window handle of the selected window.


The WinFinder control isn't very useful for many applications, but sometimes it may be just what you need.


Download OCX - 11 Kb
Download demo project - 16 Kb
Download source - 33 Kb


  • WinControl

    Posted by Legacy on 06/06/2001 12:00am

    Originally posted by: Venkatesh

    excellent tool

Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • The open source cloud computing project OpenStack has come a long way since NASA and Rackspace launched it in 2010. Backed by leading technology infrastructure providers including Cisco, Dell, EMC, HP, IBM, Intel, and VMware, OpenStack underpins significant workloads at an increasingly diverse set of organizations, including BWM, CERN, Comcast, eBay, and Wal-Mart. For CIOs engaged in broader programs to win, serve, and retain customers -- and refocus business technology (BT) spend -- a planned and pragmatic …

  • Essential Insights for Successful Cloud Migration and Management Whether you're planning your cloud migration strategy or already in the cloud, making accurate cloud decisions requires a deep analytical approach. This paper discusses the main objectives to achieve, top questions to ask, and the analytics you need at each stage of your cloud journey. You'll learn: How to identify which cloud provider will provide the best cost and performance benefits for your organization How to determine which applications …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date