在 Python 中,可以使用 win32gui
模块来获取窗口句柄。以下是几种常见的方法:
- 使用
FindWindow
函数查找窗口。
import win32gui hwnd = win32gui.FindWindow("窗口类名", "窗口标题")
其中,第一个参数为窗口类名,第二个参数为窗口标题。 需要注意的是,使用这种方法可能会出现问题,因为窗口类名和标题可以被其他程序修改,不一定准确。
2. 使用 FindWindowEx
函数查找子窗口。 如果要操作窗口的子窗口,可以使用 FindWindowEx
函数查找子窗口。例如:
import win32gui hwndParent = win32gui.FindWindow("父窗口类名", "父窗口标题") hwndChild = win32gui.FindWindowEx(hwndParent, 0, "子窗口类名", "子窗口标题")
其中,第一个参数为父窗口句柄,第二个参数为子窗口句柄,可以为 0;第三个参数为子窗口类名,第四个参数为子窗口标题。
3. 使用 EnumWindows
函数枚举窗口。 可以使用 EnumWindows
函数枚举窗口,并使用回调函数判断窗口是否符合条件。例如:
import win32gui def callback(hwnd, hwnd_list): # 判断窗口是否符合条件 if (...): # 将窗口句柄添加到列表中 hwnd_list.append(hwnd) hwnd_list = [] win32gui.EnumWindows(callback, hwnd_list)
需要注意的是,在回调函数中,如果要修改全局变量,需要使用 global
关键字声明。例如:
import win32gui hwnd_list = [] def callback(hwnd, param): global hwnd_list # 判断窗口是否符合条件 if (...): # 将窗口句柄添加到列表中 hwnd_list.append(hwnd) win32gui.EnumWindows(callback, None)
以上是几种常见的获取窗口句柄的方法。在使用 FindWindow
和 FindWindowEx
函数时,需要注意窗口类名和标题是否准确;在使用 EnumWindows
函数时,需要注意回调函数的实现方式。
评论