关于windows中软件的ListView控件表格和读取

  1. 背景–定一个目标
    当我们打开windows的某些软件时,想要去获取软件表格数据,可是那些表格数据是没有复制功能的,以ListView控件为例,毕竟它是经常出现在一些数据显示,而那些数据也是我们很想要的。
    随机选择一个软件,例如SQLyog软件,里面有一个表诊断功能,这里就列了一些数据,我们想把这些表名取出来。(只是演示)
    关于windows中软件的ListView控件表格和读取_第1张图片

  2. 安装好pywinauto – 配置好工具
    这个python包的详细信息可以参考:
    https://www.kancloud.cn/gnefnuy/pywinauto_doc/1193040
    https://github.com/pywinauto/pywinauto

  3. 下载一个辅助的工具 – 配置好工具
    Spy++:https://download.csdn.net/download/ld326/8648991
    Spy4Win:https://download.csdn.net/download/ld326/8649013
    下面是Spy4Win的一个演示,把那个“狗头”图标移要研究的窗口就在软件中显示了。
    关于windows中软件的ListView控件表格和读取_第2张图片

  4. python代码 – 实施

# -*- coding: utf-8 -*-
"""
@author:liangrui
@file:test_win.py
@time:2020/12/25
@file_dese:
    解释与抽取表格数据
"""
from pywinauto import Application

app = Application().connect(path="D:\Program Files\SQLyog Ultimate\SQLyog.exe")
app["表诊断"].window(title_re="", class_name="SysListView32").print_control_identifiers()
# 定位到控件
print("--"*30)
list1 = app["表诊断"].child_window(class_name="SysListView32")
c_count = list1.column_count()
cur_c = 1
for item in list1.items():
    cur_c += 1
    print(item.item_data()['text'], end=" ")
    if cur_c > c_count:
        print()
        cur_c = 1
  1. 显示结果:
ListView - ''    (L717, T399, R938, B566)
['ListViewgenre', 'ListViewactor', 'ListView', 'ListViewactor_to_movie', 'ListViewmovie', 'ListViewmovie_to_genre']
child_window(class_name="SysListView32")
   | 
   | Header - ''    (L719, T401, R936, B401)
   | ['Header']
   | child_window(class_name="SysHeader32")
------------------------------------------------------------
 actor 
actor_to_movie 
genre 
movie 
movie_to_genre 

happyprince/https://blog.csdn.net/ld326/article/details/111665318

你可能感兴趣的:(windows,python,pywinauto)