BOOL EnumWindows( WNDENUMPROC lpEnumFunc, LPARAM lParam );该函数枚举所有屏幕上的顶层窗口,并将窗口句柄传送给应用程序定义的回调函数,其中lParam是传递给lpEnumFunc的参数。回调函数返回FALSE将停止枚举,否则EnumWindows函数继续到所有顶层窗口枚举完为止。例如获取所有的桌面窗口句柄,并将其值放到CListBox中:
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
static TCHAR szBuffer[90];
static TCHAR szTemp[80];
static TCHAR szFormat[] = _T("%08lX: %s");
HWND hwndListBox = (HWND)lParam;
CListBox* plb = (CListBox*)CWnd::FromHandle(hwndListBox);
GetWindowText(hwnd, szTemp, sizeof(szTemp));
_stprintf_s(szBuffer, 90, szFormat, hwnd, szTemp);
return (plb->AddString(szBuffer) >= 0) ? TRUE : FALSE;
}
//CListBox* plb = (CListBox*)GetDlgItem("列表控件");
EnumWindows(EnumWindowsProc, (LPARAM)plb->GetSafeHwnd());