-
背景–定一个目标
当我们打开windows的某些软件时,想要去获取软件表格数据,可是那些表格数据是没有复制功能的,以ListView控件为例,毕竟它是经常出现在一些数据显示,而那些数据也是我们很想要的。
随机选择一个软件,例如SQLyog软件,里面有一个表诊断功能,这里就列了一些数据,我们想把这些表名取出来。(只是演示)
-
安装好pywinauto – 配置好工具
这个python包的详细信息可以参考:
https://www.kancloud.cn/gnefnuy/pywinauto_doc/1193040
https://github.com/pywinauto/pywinauto -
下载一个辅助的工具 – 配置好工具
Spy++:https://download.csdn.net/download/ld326/8648991
Spy4Win:https://download.csdn.net/download/ld326/8649013
下面是Spy4Win的一个演示,把那个“狗头”图标移要研究的窗口就在软件中显示了。
-
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
- 显示结果:
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