Python 取ListView内部数据,32位,64位通用
listview内部控件数据按行输出,并带有表头
工作中遇到需要使用listview显示的数据,又很急用,于是在网上找了一些相关的博客,的确找到了一些。虽然写的都差不多估计相互转载来的,内容还算全面稍微改改就可以使用,然后这件事就这么过去了。突然又有这么一天再用这个模块获取数据就不行了。
思来想去,问题只会出现在目标软件上,因为listview是标准化组件,应该不会是这个问题,最有可能是出在了软件位数上面,这个方法只能在某个位数上使用,另一个就不行。就试了一下,果然,32位下获取数据正常,64位下就没有数据。
针对这个问题,我在32位的基础上添加了对64位的支持,这个需要涉及到C语言方面的知识,请教了同事才搞定。
**提示:**有些朋友反应取不到数据,总结了大多数情况是取操作系统自己的数据,那么需要用管理员权限去执行才能够拿到数据。
使用方法
#将包放在执行路径下或者sys.path主动加入路径
from GetListViewData import GetListViewData
#加载pyd文件,引入模块
lv_data_obj = GetListViewData()
#实例化对象
data = lv_data_obj.getData(hwnd = 136066, bits = 32)
#传入listview的句柄,软件位数可以写32位或64位,如果没写会自己检查,但是可能没检查出来报异常
#如果主动指定了位数就不要传错,比如是32位的传入了64位的,一样拿不出数据
print(data)
#(True, [{'表头字段名称1': '第N行对应值1', '表头字段名称2': '第N行对应值2', '表头字段名称3': '第N行对应值3'},
# {'表头字段名称1': '第N+1行对应值1', '表头字段名称1': '第N+1行对应值2', '表头字段名称1': '第N+1行对应值3',}
# ...
# ...
# ]
#)
#返回tuple,第一位为取数据状态,第二位为具体值
#第一位为true表示取数据成功,第一位为False取数据失败,但是也可能出现为True时未取到数据,你要根据后面值自己判断
#第二位是在列表中加入listview表中每一行的值,并且已经和表头对应好
下载地址
注意
未经作者允许,禁止转载