作用:
通过将句柄传递到每个窗口,进而将传递给应用程序定义的回调函数,枚举屏幕上的所有顶级窗口。 枚举窗口 将一直持续到最后一个顶级窗口被枚举或回调函数返回 FALSE。
语法:
BOOL EnumWindows(
[in] WNDENUMPROC lpEnumFunc,
[in] LPARAM lParam
);
参数:
参数一:[in] lpEnumFunc
类型:WNDENUMPROC
指向应用程序定义的回调函数的指针
参数二: [in] lparam
类型:LPARAM
要传递给回调函数的应用程序定义值,如果此参数为0,则枚举所有顶级窗口
返回值:
类型:BOOL
成功:返回非零
失败:返回值为零
注解:
EnumWindows 函数不枚举子窗口,但系统拥有的几个具有WS_CHILD样式的顶级窗口除外。
此函数比在循环中调用GetWindow函数更可靠。 调用 GetWindow 以执行此任务的应用程序有被捕获到无限循环或引用已销毁窗口的句柄的风险。
示例:
#include<Windows.h>
#include<stdio.h>
//定义EnumWindows的回调函数
BOOL EnumWindowsProc(HWND hwnd, LPARAM lparam)
{
char titleName[256] = { 0 };
char className[256] = { 0 };
GetWindowTextA(hwnd, titleName, 256);//获取窗口标题
GetClassNameA(hwnd, className, 256);//获取窗口类名
if (hwnd != 0)
{
printf_s("窗口标题:%s\n", titleName);
printf_s("窗口类名:%s\n", className);
printf_s("窗口句柄十进制显示:%d\n", (int)hwnd);
printf_s("窗口句柄十六进制显示:%p\n", hwnd);//%p 格式化输出指针,以十六进制显示
printf_s("\n");
return TRUE;
}
else
{
return FALSE;
}
}
/*
回调函数继续枚举则返回TRUE;停止枚举返回FALSE
*/
int main()
{
EnumWindows(EnumWindowsProc, 0);
return 0;
}