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

如何使用win32gui模块获取窗口的焦点和激活状态

发布时间:2023-12-27 19:58:49

win32gui模块是Python中的一个扩展模块,可以用来获取和操作Windows窗口的相关信息。

首先,我们需要安装pywin32模块,可以使用pip命令进行安装:

pip install pywin32

导入win32gui模块:

import win32gui

使用win32gui.GetForegroundWindow()函数可以获取当前处于焦点的窗口句柄。该函数返回一个整数类型的值,表示窗口句柄。

使用win32gui.GetWindowText()函数可以获取指定窗口的标题。该函数接受一个窗口句柄作为参数,返回窗口的标题。

使用win32gui.GetWindowRect()函数可以获取指定窗口的位置和大小。该函数接受一个窗口句柄作为参数,返回一个包含窗口左上角和右下角坐标的四元组。

下面是一个示例程序,演示了如何使用win32gui模块获取窗口的焦点和激活状态:

import win32gui

def get_foreground_window():
    hwnd = win32gui.GetForegroundWindow()
    title = win32gui.GetWindowText(hwnd)
    rect = win32gui.GetWindowRect(hwnd)
    print("焦点窗口标题:", title)
    print("焦点窗口位置和大小:", rect)

def enum_windows():
    def callback(hwnd, hwnds):
        if win32gui.IsWindowVisible(hwnd):
            title = win32gui.GetWindowText(hwnd)
            hwnds.append((hwnd, title))
        return True

    hwnds = []
    win32gui.EnumWindows(callback, hwnds)
    return hwnds

def main():
    # 获取焦点窗口
    get_foreground_window()

    # 获取所有窗口
    hwnds = enum_windows()
    for hwnd, title in hwnds:
        print(f"窗口标题:{title},窗口句柄:{hwnd}")

if __name__ == "__main__":
    main()

在上面的例子中,我们定义了两个函数,一个是get_foreground_window()函数用于获取焦点窗口的相关信息,另一个是enum_windows()函数用于获取所有窗口的相关信息。

通过调用get_foreground_window()函数,我们可以获取当前处于焦点的窗口的标题和位置大小。通过调用enum_windows()函数,我们可以获取所有窗口的标题和窗口句柄。

最后,在main()函数中,我们调用了两个函数来进行演示。

综上所述,使用win32gui模块可以方便地获取窗口的焦点和激活状态,可以用于编写自动化测试脚本、窗口管理工具等应用程序。