You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python读取其他窗口中的文本内容

Python 读取其他窗口文本实现方案

首先安装所需依赖库pywin32,安装命令如下:

pip install pywin32

实现原理

Windows平台下可通过调用User32.dll的系统API遍历窗口、获取窗口文本,和你参考的Java实现逻辑完全一致,Python可通过pywin32库直接调用这些系统API完成需求。

完整可运行代码示例

import win32gui
import win32con
import win32api

def get_window_text(hwnd):
    # 获取窗口文本长度
    text_length = win32gui.SendMessage(hwnd, win32con.WM_GETTEXTLENGTH) + 1
    # 分配存储文本的缓冲区
    buffer = win32gui.PyMakeBuffer(text_length)
    # 发送获取文本的系统消息
    win32gui.SendMessage(hwnd, win32con.WM_GETTEXT, text_length, buffer)
    # 解码返回结果并去除空字符
    return buffer.tobytes().decode('utf-16', errors='ignore').strip('\x00')

def enum_child_windows(hwnd, result_list):
    # 遍历当前窗口的所有子窗口
    child_windows = []
    win32gui.EnumChildWindows(hwnd, lambda child, param: param.append(child), child_windows)
    for child in child_windows:
        window_text = get_window_text(child)
        if window_text:
            result_list.append({
                '窗口句柄': child,
                '窗口类名': win32gui.GetClassName(child),
                '窗口文本': window_text
            })
        # 递归遍历子窗口的下级窗口
        enum_child_windows(child, result_list)

if __name__ == '__main__':
    # 替换为你要读取的目标窗口的标题关键词,也可直接指定窗口句柄
    target_window_title = '你要读取的窗口标题'
    # 查找目标窗口句柄
    hwnd = win32gui.FindWindow(None, target_window_title)
    if not hwnd:
        print('未找到目标窗口')
    else:
        all_text_info = []
        # 先获取主窗口文本
        main_window_text = get_window_text(hwnd)
        if main_window_text:
            all_text_info.append({
                '窗口句柄': hwnd,
                '窗口类名': win32gui.GetClassName(hwnd),
                '窗口文本': main_window_text
            })
        # 遍历所有子窗口获取文本
        enum_child_windows(hwnd, all_text_info)
        # 打印最终获取的所有文本信息
        for info in all_text_info:
            print(f"句柄:{info['窗口句柄']},类名:{info['窗口类名']},文本:{info['窗口文本']}")

注意事项

  • 该方案仅适用于Windows平台,常规Win32标准控件窗口可直接读取,非标准渲染窗口(如Qt自绘窗口、游戏窗口、浏览器页面内容)需额外适配
  • 若目标窗口权限高于当前Python进程,需以管理员身份运行Python脚本才可正常获取文本
  • 若不清楚目标窗口的完整标题,可先运行下方代码遍历所有顶层窗口,找到对应的窗口标题后替换到示例代码中
import win32gui
def print_all_top_windows(hwnd, param):
    print(f"句柄:{hwnd},标题:{win32gui.GetWindowText(hwnd)}")
win32gui.EnumWindows(print_all_top_windows, None)

内容的提问来源于stack exchange,提问作者Nowis F. R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:57:03