文档准备
在编写Python程序之前需要安装pywin32
,并准备以下代码示例所需的工具:
import win32gui
import win32con
获取窗口句柄
遍历当前系统中的所有窗口,可以使用窗口句柄来实现。窗口句柄是一个唯一标识符,它用于区分系统中打开的所有窗口。在Python中,通过使用win32gui
模块可以获取窗口句柄。以下示例使用win32gui.EnumWindows
函数枚举系统中的所有窗口,并将其句柄打印出来:
def enum_windows_callback(hwnd, window_list):
window_title = win32gui.GetWindowText(hwnd)
window_list.append((hwnd, window_title))
windows = []
win32gui.EnumWindows(enum_windows_callback, windows)
for hwnd, title in windows:
print("{}: {}".format(hwnd, title))
获取窗口标题
获取窗口标题也非常简单。通过使用win32gui.GetWindowText
函数即可获取窗口的标题。以下示例可以针对窗口的标题进行处理:
def enum_windows_callback(hwnd, window_list):
window_title = win32gui.GetWindowText(hwnd)
if window_title:
window_list.append((hwnd, window_title))
windows = []
win32gui.EnumWindows(enum_windows_callback, windows)
for hwnd, title in windows:
print("{}: {}".format(hwnd, title))
代码解释
以上给出的示例代码使用了win32gui
模块中的函数和常量。其中,win32gui.EnumWindows
枚举系统中所有的顶层窗口。win32gui.EnumChildWindows
枚举某个父窗口下的所有子窗口。这两个函数都接受一个回调函数作为参数。在遍历窗口时,回调函数会针对每个窗口调用一次。回调函数的参数hwnd
是当前窗口的句柄。返回值为True,枚举窗口将会继续。
示例:获取cmd窗口句柄
import win32gui
def enum_windows_callback(hwnd, window_list):
window_title = win32gui.GetWindowText(hwnd)
if "cmd.exe" in window_title.lower():
window_list.append(hwnd)
windows = []
win32gui.EnumWindows(enum_windows_callback, windows)
if len(windows) == 0:
print("未找到CMD窗口")
else:
print("CMD窗口句柄: {}".format(windows[0]))
示例:获取所有IE窗口标题
import win32gui
def enum_windows_callback(hwnd, window_list):
window_text = win32gui.GetWindowText(hwnd)
window_class = win32gui.GetClassName(hwnd)
if "internet explorer" in window_class.lower():
window_list.append((hwnd, window_text))
windows = []
win32gui.EnumWindows(enum_windows_callback, windows)
for hwnd, title in windows:
print("{}: {}".format(hwnd, title))
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现遍历windows所有窗口并输出窗口标题的方法 - Python技术站