yixinwenxin 发表于 2022-6-28 16:31:56

win32gui.EnumWindows

hwnd_list = []
win32gui.EnumWindows(lambda hWnd, param: param.append(hWnd), hwnd_list)
print(hwnd_list)

win32gui.EnumWindows(lambda hWnd, param: param.append(hWnd), hwnd_list)完全蒙蔽。。。求解释越详细越好
百度 看不明白...才来问

hrpzcf 发表于 2022-6-28 16:31:57

本帖最后由 hrpzcf 于 2022-6-28 18:13 编辑

win32gui.EnumWindows 函数原型:win32gui.EnumWindows(lpEnumFunc, lParam)
lpEnumFunc 参数:要求是一个函数,且能接受两个参数
lParam参数:EnumWindows 内部调用 lpEnumFunc 函数时,lParam 将作为 lpEnumFunc 函数的第二个参数

你的代码可以改写成import win32gui

def lpEnumFunc(hWnd, param):
    param.append(hWnd)

hwnd_list = []
win32gui.EnumWindows(lpEnumFunc , hwnd_list)
print(hwnd_list)


所以你的代码的执行过程就是:
你调用 win32gui.EnumWindows(lpEnumFunc, hwnd_list),win32gui.EnumWindows 内部又循环调用 lpEnumFunc(窗口句柄, hwnd_list),直到遍历所有的顶级窗口或者 lpEnumFunc 返回 false
lpEnumFunc 内部又执行 hwnd_list.append(窗口句柄),所以 win32gui.EnumWindows 执行结束后就完成了把窗口句柄填充到 hwnd_list 的过程。
页: [1]
查看完整版本: win32gui.EnumWindows