Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Download Visual Studio Add-In

FindWindowEx (user32)
 
.
Summary

C# Signature:

[DllImport("user32.dll", SetLastError = true)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr hWndChildAfter, string className,  string 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 String) 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 the hexadecimal value of AppDomain hash code.
    // This value is dynamically appended to the window class name of the child window
    // for .NET Windows Forms.  This name is viewable via 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 = GetForegroundWindow();
    IntPtr childHandle;
    String strUrlToReturn = "";

    //try to get a handle to IE's toolbar container
    childHandle = FindWindowEx(windowHandle,IntPtr.Zero,"WorkerW",IntPtr.Zero);
    if(childHandle != IntPtr.Zero)
    {
        //get a handle to address bar
        childHandle = FindWindowEx(childHandle,IntPtr.Zero,"ReBarWindow32",IntPtr.Zero);
        if(childHandle != IntPtr.Zero)
        {
            // get a handle to combo boxex
            childHandle = FindWindowEx(childHandle, IntPtr.Zero, "ComboBoxEx32", IntPtr.Zero);
            if(childHandle != IntPtr.Zero)
            {
                // get a handle to combo box
                childHandle = FindWindowEx(childHandle, IntPtr.Zero, "ComboBox", IntPtr.Zero);
                if(childHandle != IntPtr.Zero)
                {
                    //get handle to edit
                    childHandle = FindWindowEx(childHandle, IntPtr.Zero, "Edit", IntPtr.Zero);
                    if (childHandle != IntPtr.Zero)
                    {
                        strUrlToReturn = GetText(childHandle);
                    }
                }
            }
        }
    }
    return strUrlToReturn;
}

Alternative Managed API:

Do you know one? Please contribute it!

Referrel URL : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/findwindowex.asp

Documentation

Here is an alternative Managed API to FindWindow, The article also describes a way to CloseWindow of another process like notepad, not sure if there is such thing in Win32 API, but at least you can do it in .NET! Here is the article:

http://www.mycsharpcorner.com/Post.aspx?postID=32

Please edit this page!

Do you have...

  • helpful tips or sample code to share for using this API in managed code?
  • corrections to the existing content?
  • variations of the signature you want to share?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).

 
Access PInvoke.net directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version
Revisions