以下是一个示例代码,演示了如何按类查找子窗口:
import win32gui
def find_child_windows(parent_hwnd, class_name):
results = []
def enum_callback(hwnd, results):
if win32gui.GetClassName(hwnd) == class_name:
results.append(hwnd)
return True
win32gui.EnumChildWindows(parent_hwnd, enum_callback, results)
return results
# 示例用法
if __name__ == "__main__":
parent_hwnd = 0x12345678 # 父窗口的句柄,需要替换成实际的值
class_name = "子窗口类名" # 子窗口的类名,需要替换成实际的值
child_windows = find_child_windows(parent_hwnd, class_name)
if child_windows:
print("找到了{}个子窗口".format(len(child_windows)))
for hwnd in child_windows:
window_text = win32gui.GetWindowText(hwnd)
print("子窗口句柄:{}, 文本:{}".format(hwnd, window_text))
else:
print("未找到任何子窗口")
在这个示例中,我们首先定义了一个find_child_windows
函数,该函数接受两个参数:父窗口的句柄和子窗口的类名。
在find_child_windows
函数内部,我们定义了一个enum_callback
回调函数,用于遍历所有子窗口。当找到符合条件的子窗口时,我们将其句柄添加到results
列表中。
然后,我们使用win32gui.EnumChildWindows
函数来枚举父窗口的所有子窗口,并将enum_callback
回调函数传递给它。枚举过程中,如果enum_callback
函数返回True
,则枚举将继续进行,否则将停止。
最后,我们返回results
列表,其中包含了所有符合条件的子窗口的句柄。
在示例的用法部分,我们可以替换parent_hwnd
和class_name
的值,以便在实际应用中查找特定类名的子窗口。然后,我们可以通过遍历child_windows
列表来获取每个子窗口的句柄和文本。
上一篇:按类别组织项目的功能
下一篇:按类返回的元素为空。