FindWindowEx (user32)
Last changed: a-202.69.38.82

.
Summary

C# Signature:

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

[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className,  IntPtr windowTitle);

VB Signature:

<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindowEx(ByVal parentHandle As IntPtr, _
                      ByVal childAfter As IntPtr, _
                      ByVal lclassName As String, _
                      ByVal windowTitle As tring) As IntPtr
End Function

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

/// <summary>
/// Gets the handle to the horizontal scroll bar.
/// </summary>
/// <param name="parentControl">The parent window of the scrollbar.</param>
/// <returns>Handle to the scrollbar window.</returns>
private IntPtr GetHandleToHorizontalScrollBar(Control parent)
{
    // Locals
    IntPtr childHandle;
    string appDomainHexedHash;

    // Get hexadecimal value of AppDomain hash code
    // This value is dynamically appended to the window class name of the child window
    // (as viewable in the Spy++ tool)
    appDomainHexedHash = AppDomain.CurrentDomain.GetHashCode().ToString("x");

    // Find window handle
    childHandle = FindWindowEx(
        parent.Handle,    // Parent handle
        IntPtr.Zero,    // Child window after which to seek
        "WindowsForms10.SCROLLBAR.app.0." + appDomainHexedHash, // Class name to seek (viewable in the Spy++ tool)
        IntPtr.Zero);    // Window title to seek

    // Return handle
    return childHandle;
}

private string GetUrlFromIE(IntPtr windowHandle)
{
    IntPtr childHandle;
    IntPtr size = IntPtr.Zero;
    StringBuilder currentUrl = new StringBuilder();

    //try to get a handle to IE's toolbar container
    childHandle = Win32.FindWindowEx(windowHandle,IntPtr.Zero,"WorkerW",IntPtr.Zero);
    if(childHandle != IntPtr.Zero)
    {
        //get a handle to address bar
        childHandle = Win32.FindWindowEx(childHandle,IntPtr.Zero,"ReBarWindow32",IntPtr.Zero);
        if(childHandle != IntPtr.Zero)
        {
            //finally, locate combo box and add its text to the list
            childHandle = Win32.FindWindowEx(childHandle, IntPtr.Zero, "ComboBoxEx32", IntPtr.Zero);
            if(childHandle != IntPtr.Zero)
            {
                size = Win32.SendMessage(childHandle,Win32.WM_GETTEXTLENGTH,IntPtr.Zero,IntPtr.Zero);
                Win32.SendMessage(childHandle,Win32.WM_GETTEXT,size,currentUrl);
            }
        }
    }
    return currentUrl.ToString();
}

Alternative Managed API:

Do you know one? Please contribute it!

Documentation