EnumWindows的使用
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());