Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than user32, prefix the name with the module name and a period.
findwindow (user32)
.
C# Signature:
// [DllImport("coredll.dll"), SetLastError = true)] //<-- Use this insead of user32.dll for Windows Mobile
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
VB Signature:
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
End Function
<DllImport("user32.dll", EntryPoint:="FindWindow", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindowByClass(ByVal lpClassName As String, ByVal zero As IntPtr) As IntPtr
End Function
<DllImport("user32.dll", EntryPoint:="FindWindow", SetLastError:=True, CharSet:=CharSet.Auto)> _
Private Shared Function FindWindowByCaption(ByVal zero As IntPtr, ByVal lpWindowName As String) As IntPtr
End Function
User-Defined Types:
None.
Notes:
The FindWindow function retrieves the handle to the top-level window whose class name and window name match the specified strings. This function does not search child windows.
*If lpClassName is NULL FindWindow will search for the window by the lpWindowName (window's title) only. This is useful if the class of a particular window is variable.
Tips & Tricks:
Use the fantastic Spy++ (One of the vStudio tools) to get details of specific Windows you're looking for.
Sample Code (C#):
public static int FindWindow(string windowName, bool wait)
{
int hWnd = FindWindow(null, windowName);
while (wait && hWnd == 0)
{
System.Threading.Thread.Sleep(500);
hWnd = FindWindow(null, windowName);
}
return hWnd;
}
// THE FOLLOWING METHOD REFERENCES THE SetForegroundWindow API
public static bool BringWindowToTop(string windowName, bool wait)
{
int hWnd = FindWindow(windowName, wait);
if (hWnd != 0)
{
return SetForegroundWindow((IntPtr)hWnd);
}
return false;
}
Sample Code (VB.net):
//Open Up blank 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());
}
}
'// VB (chellios at gmail dot com)
'// Open up a blank Notepad!
Dim lpszParentClass As String = "Notepad"
Dim lpszParentWindow As String = "Untitled - Notepad"
Dim lpszClass As String = "Edit"
Dim ParenthWnd As New IntPtr(0)
Dim hWnd As New IntPtr(0)
If ParenthWnd.Equals(IntPtr.Zero) Then
Debug.WriteLine("Notepad Not Running!")
Else
hWnd = FindWindowEx(ParenthWnd, hWnd, lpszClass, "")
If hWnd.Equals(IntPtr.Zero)
Debug.WriteLine("What the F??? Notepad doesn't have an Edit component, how strange.")
Else
Debug.WriteLine("Notepad Window: " & ParenthWnd.ToString())
Debug.WriteLine("Edit Control: " & hWnd.ToString())
End If
End If
Alternative Managed API:
Do you know one? Please contribute it!
'If you are using VB.net in Visual Studio 2005, don't forget "Imports System.Runtime.InteropServices" at the top of your
'module or none of this beautiful code will work at all
The FindWindowEx API
7/24/2021 9:48:36 PM - a-202.69.38.82
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).