EnumWindows是一种计算机函数,原型为BOOL EnumWindows。
EnumWindows是一种计算机函数,原型为BOOL EnumWindows。
该函数枚举所有屏幕上的顶层窗口,并将窗口句柄传送给应用程序定义的回调函数。回调函数返回FALSE将停止枚举,否则EnumWindows函数继续到所有顶层窗口枚举完为止。
参数:
lpEnumFunc:指向一个应用程序定义的回调函数指针,请参看EnumWindowsProc。
lPararm:指定一个传递给回调函数的应用程序定义值。
回调函数原型
BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam);
参数:
hwnd:顶层窗口的句柄
lparam:应用程序定义的一个值(即EnumWindows中lParam)
如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。
EnumWindows函数不列举子窗口。
在循环体中调用这个函数比调用GetWindow函数更可靠。调用GetWindow函数中执行这个任务的应用程序可能会陷入死循环或指向一个已被销毁的窗口的句柄。
Windows NT:3.1以上版本;Windows:95以上版本;Windows CE:
1.0以上版本;
头文件:winuser.h中声明,包含windows.h即可.
库文件:user32.lib。
代码VC++ MFC(列举所有桌面窗口,窗口标题放在全局变量string buf数组中,n是静态变量):
BOOL CALLBACK lpEnumFunc(HWND hwnd, LPARAM lParam)
{
char str;
::GetWindowText(hwnd,str,sizeof(str));
buf=str;
return 1;
}
void CEnumWindowsDlg::onOK()
{
// TODO: Add extra validation here
n=0;
EnumWindows(lpEnumFunc,NULL);
int i;
for(i=0;i<n;i++)
{
if(buf!="")
m_list.AddString(buf.c_str());
}
//CDialog::onOK();
}