我想从内存中获取到一个窗口的控件内容。控件是 pictureBox 控件。就是个图片控件 我尝试内存中查找图片的特征码 IHDR、GIF、JFIF 等,都没有办法获取到 另外有种就是屏幕截图,但是这种我不太喜欢,希望可以直接从内存中找到该数据,这样也可以省掉一点消耗。 请问是我的思路错了吗? 求各位大佬指点迷津~
1
xupefei 2019-10-04 17:41:57 +08:00
内存里是不会有特征码的,显示在屏幕上的图片经过了解码,内存里只有每个点的颜色。
想从内存里找到图片数据,你需要用 debugger 找到设置图片的代码,然后根据内存指针找到图片地址。 |
2
rumu3f 2019-10-04 17:42:28 +08:00 via iPhone
Ce+Od
|
3
watzds 2019-10-04 17:46:55 +08:00 via Android
以前 windows 上的 spy++是能看 win32 那些控件的属性的
|
4
Kirscheis 2019-10-04 17:50:04 +08:00 via Android
截图和从内存里取并没有区别啊,都是已经解码的数据。。如果你是想找到图片源文件,那得下断点,因为一般读完之后就已经 close 了,内存里源文件就被 flush 掉了。
|
6
ysc3839 2019-10-04 20:21:31 +08:00 via Android
@abczise 那些“属性”只是一些 bitset flag,比如控制是否显示这类的,不是你想的可以读取出图片。
|
7
WinCloud 2019-10-04 21:27:34 +08:00 via Android
应该可以通过 UI automtic 接口获取控件位置,再用窗口句柄截图吧。能显示出来的图片基本都是 RGBA 格式了,有些 GPU 绘制的控件,图片数据可能会存到显存里,内存上找不到的。
|