欢迎访问宙启技术站
智能推送

Python中判断窗口是否存在的快速方法——IsWindow()函数

发布时间:2023-12-24 04:47:26

在Python中,可以通过win32gui.FindWindow()函数判断窗口是否存在。具体来说,FindWindow()函数会搜索指定的窗口类名和窗口标题,若找到对应的窗口,则返回窗口的句柄;否则,返回0。

然而,使用FindWindow()函数有一个问题,即无法区分系统级和应用级窗口。因此,为了更准确地判断窗口是否存在,可以使用win32gui.EnumWindows()函数遍历所有窗口,并通过窗口的类名和标题进行匹配。

以下是一个示例,展示如何使用IsWindow()函数判断窗口是否存在:

import win32gui

def is_window(window_class, window_title):
    def callback(hwnd, window_data):
        if win32gui.IsWindowVisible(hwnd) and \
           win32gui.GetWindowText(hwnd).lower() == window_title.lower() and \
           win32gui.GetClassName(hwnd) == window_class:
                window_data["found"] = True
        return True

    window_data = {"found": False}
    win32gui.EnumWindows(callback, window_data)

    return window_data["found"]

# 示例用法
if is_window("Notepad", "Untitled - Notepad"):
    print("窗口存在")
else:
    print("窗口不存在")

上述示例中,is_window()函数接受两个参数,即窗口类名和窗口标题。它会使用EnumWindows()函数遍历所有窗口,并使用IsWindowVisible()函数判断窗口是否可见。在遍历过程中,每个窗口的类名和标题会与参数进行比较,若匹配,则将window_data["found"]置为True。最终,返回window_data["found"]的值。

以上就是使用IsWindow()函数判断窗口是否存在的方法,通过遍历所有窗口进行匹配,可以更准确地判断窗口的存在性。