MFC-FindWindow获取与指定窗口类名和窗口名相匹配的最顶层窗口的窗口句柄_类名

 

HWND hWnd2 = GetSafeHwnd();
::SetWindowText(hWnd2, _T("窗口句柄练习"));
TCHAR ch[MAX_PATH] = { 0 };
CString str;


HWND hWnd = ::FindWindow(NULL,NULL);//获取与指定窗口类名和窗口名的最顶层窗口的窗口句柄
//参数1:窗口类名 可以NULL
//参数2:窗口名(窗口标题) 可以NULL

while (hWnd != NULL)
{
::GetWindowText(hWnd, ch, MAX_PATH);
if (_tcslen(ch)>0)
{
str = ch;
WriteConsole(hStdout, ch, _tcslen(ch), NULL, NULL);
WriteConsole(hStdout, _T("\r\n"), _tcslen(_T("\r\n")), NULL, NULL);

}

hWnd = ::FindWindowEx(0, hWnd,NULL,NULL);//在窗口列表中寻找与指定条件相符的第一个子窗口句柄
//该函数获得一个窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。
// 这个函数查找子窗口,从排在给定的子窗口后面的下一个子窗口开始。在查找时不区分大小写
//参数1:hwndParent:要查找的子窗口所在的父窗口的句柄(如果设置了hwndParent,则表示从这个hwndParent指向的父窗口中搜索子窗口)
// 如果hwndParent为 0 ,则函数以桌面窗口为父窗口,查找桌面窗口的所有子窗口
//参数2:hwndChildAfter :子窗口句柄。查找从在Z序中的下一个子窗口开始。子窗口必须为hwndParent窗口的直接子窗口而非后代窗口。
// 如果HwndChildAfter为NULL,查找从hwndParent的第一个子窗口开始。
// 如果hwndParent 和 hwndChildAfter同时为NULL,则函数查找所有的顶层窗口及消息窗口
//参数3:窗口类名
//参数4:窗口名(窗口标题)。如果该参数为NULL,则为所有窗口全匹配
//返回值:Long,找到的窗口的句柄。如未找到相符窗口,则返回NULL

}

 

查看窗口的类、句柄、标题


 

以记事本为实例:

HWND hWnd = ::FindWindow(_T("Notepad"), _T("sss.txt - 记事本"));
//获取计算器句柄
if (hWnd)
{
::SetWindowText(hWnd, _T("句柄练习"));

}
else
{
AfxMessageBox(_T("句柄没找到"));
}