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());
posted @ 2011-05-12 23:51  MagiCube  阅读(9727)  评论(0编辑  收藏