EnumWindows 函数 (winuser.h)

作用:

通过将句柄传递到每个窗口,进而将传递给应用程序定义的回调函数,枚举屏幕上的所有顶级窗口。 枚举窗口 将一直持续到最后一个顶级窗口被枚举或回调函数返回 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值