各位大佬们,现在有个需求,windows 平台,运行的一个带 GUI 的软件(用 MFC 或者 QT 开发的 GUI 软件),界面上显示的一些数据,现在想定时获取这个软件界面的数据,有什么好的办法吗? 我能想到的办法: 1.定时截屏,获取数据,但是这要求这个 GUI 软件必须处于前台显示中,如果最小化后就无法获得了。 2.捕获内存,类似于金山游侠的原理,直接找到数据在内存中的位置。 各位大佬还有没有其他的好办法,谢谢了。
1 strict 2021-12-15 16:55:52 +08:00 如果看不到源码的话, 只能采取第一种 RPA 的方式了. 业界也比较成熟了. |
2 abear 2021-12-15 17:00:48 +08:00 cheatEngine |
3 abear 2021-12-15 17:02:24 +08:00 wireshark |
![]() | 4 crab 2021-12-15 17:07:49 +08:00 |
![]() | 5 orangie 2021-12-15 17:27:21 +08:00 ![]() 参考 obs 和其他的录屏软件,其实第一种窗口不必须在最前,可以被其他窗口遮盖,因为 Windows 桌面从 vista 开始就是多层合成的。但应该还是不能最小化,因为似乎应用程序会根据是否最小化决定是否绘制窗口。不过话说,用 MFC 或者 Qt 开发的程序,应该用的是系统自带的控件展示数据,那么应该可以 hook 得到那个控件对象的句柄,然后从中取得数据,不过这些我没实践过,只是听说过。 |
![]() | 7 elechi OP 除了分析屏幕和内存还有没有其他的方式? |
8 Hansah 2021-12-15 19:54:19 +08:00 via Android 按键精灵取后台程序数据 |
![]() | 9 xtinput 2021-12-15 20:02:41 +08:00 开多桌面呀 |
10 abear 2021-12-15 23:18:11 +08:00 一切的数据都有来源,大多数来源是 http ,桌面截图是程序外,cheatEngine 是内存里面找,wireshark 从数据来源上面找 |
11 misdake 2021-12-16 00:06:04 +08:00 MFC 或者 Qt 的话,可以抓到控件句柄,直接读数据的吧 |
![]() | 12 xupefei 2021-12-16 00:18:40 +08:00 via iPhone 最通用的方法是虚拟出一个假显示器,把窗口挪过去。 这样你就不用管程序最小化后还会不会更新窗口了。 |
![]() | 13 ysc3839 2021-12-16 00:51:31 +08:00 可能可以通过无障碍相关的接口读到界面的文本数据。具体得看是什么 GUI 框架,请提供详细信息一边判断。 |
![]() | 15 ysc3839 2021-12-16 00:56:10 +08:00 @orangie 其实 Windows XP 时就可以获取后台窗口的画面,因为加入了 PrintWindow 这个 API 。不过这个方法不是绝对有效,程序可以选择不返回图像。 |
![]() | 16 ClericPy 2021-12-16 02:46:50 +08:00 挺多软件貌似可以按控件句柄提取 TEXT 什么的, 以前玩 autohotkey 的时候那个 winspy 还是 ahkinfo 什么的就挺简单的. 不过得看用什么框架写的 GUI, 有的窗口就拿不到控件信息 |
17 crazt 2021-12-16 03:45:32 +08:00 可以试试微软的 Power Automate Desktop ,个人账户虽然能用但没法设置定时启动,如果弄一个开发者订阅或是企业订阅就可以定时执行你要的操作。用 UI 自动化里的功能获取数据后邮件自动发送就行,也可以用它类似按键精灵的功能操控鼠标键盘完成你的需求(比如发送或是打开窗口)。 虽然我最近才发现这个软件,还没实际用过,但觉得楼主可以装一个试试 () |
![]() | 18 yousabuk 2021-12-16 07:47:20 +08:00 via iPhone 可以用 C 获取 window 句柄,控件句柄,再读取值。 其他不晓得 |
![]() | 19 ragnaroks 2021-12-16 08:31:12 +08:00 各种传奇开区助手,就是通过句柄取数据后台全自动操作具体的平台网关。 其中 WPF 这类可以通过 ainWindow.Content[0].Content[0].Button.Caption 这种方式写死路径查找 |
![]() | 20 huruwo 2021-12-16 10:44:21 +08:00 抓包 |
![]() | 21 elechi OP 感谢各位大佬的意见,我去试试 |