FindWindowEx (user32)
Last changed: a-202.69.38.82

.
Summary

C# Signature:

[DllImport("user32.dll")]
static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow);

VB Signature:

<DllImport("user32.dll")> _
Shared Function FindWindowEx( _
  ByVal hWndParent As IntPtr, _
  ByVal hWndChildAfter As IntPtr, _
  ByVal ClassName As String, _
  ByVal WindowCaption As String) As IntPtr: End Function

Notes:

The FindWindowEx function retrieves the handle to a window whose class name and window name match the specified strings. The function searches child windows, beginning with the one following the given child window.

Works hand-in-hand with The FindWindow API

Tips & Tricks:

Use the fantastic Spy++ (One of the vStudio tools) to get details of specific Windows you're looking for.

Sample Code:

//C#
//Open Notepad First
string lpszParentClass = "Notepad";
string lpszParentWindow = "Untitled - Notepad";
string lpszClass = "Edit";

IntPtr ParenthWnd = new IntPtr(0);
IntPtr hWnd = new IntPtr(0);
ParenthWnd = FindWindow(lpszParentClass,lpszParentWindow);
if (ParenthWnd.Equals(IntPtr.Zero))  
     Console.WriteLine("Notepad Not Running");
else
{
     hWnd = FindWindowEx(ParenthWnd,hWnd,lpszClass,"");
     if (hWnd.Equals(IntPtr.Zero))  
     Console.WriteLine("What the F??? Notepad doesn't have an edit component ?");
     else
     {
     Console.WriteLine("Notepad Window: " + ParenthWnd.ToString());
     Console.WriteLine("Edit Control: " + hWnd.ToString());
     }
}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation