V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
abczise
V2EX  ›  问与答

有大佬研究过内存数据吗?

  •  
  •   abczise · 2019-10-04 17:34:02 +08:00 · 2228 次点击
    这是一个创建于 1861 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想从内存中获取到一个窗口的控件内容。控件是 pictureBox 控件。就是个图片控件 我尝试内存中查找图片的特征码 IHDR、GIF、JFIF 等,都没有办法获取到 另外有种就是屏幕截图,但是这种我不太喜欢,希望可以直接从内存中找到该数据,这样也可以省掉一点消耗。 请问是我的思路错了吗? 求各位大佬指点迷津~

    7 条回复    2019-10-04 21:27:34 +08:00
    xupefei
        1
    xupefei  
       2019-10-04 17:41:57 +08:00
    内存里是不会有特征码的,显示在屏幕上的图片经过了解码,内存里只有每个点的颜色。
    想从内存里找到图片数据,你需要用 debugger 找到设置图片的代码,然后根据内存指针找到图片地址。
    rumu3f
        2
    rumu3f  
       2019-10-04 17:42:28 +08:00 via iPhone
    Ce+Od
    watzds
        3
    watzds  
       2019-10-04 17:46:55 +08:00 via Android
    以前 windows 上的 spy++是能看 win32 那些控件的属性的
    Kirscheis
        4
    Kirscheis  
       2019-10-04 17:50:04 +08:00 via Android
    截图和从内存里取并没有区别啊,都是已经解码的数据。。如果你是想找到图片源文件,那得下断点,因为一般读完之后就已经 close 了,内存里源文件就被 flush 掉了。
    abczise
        5
    abczise  
    OP
       2019-10-04 18:05:37 +08:00
    @watzds 查到属性后怎么操作?截屏 ?
    ysc3839
        6
    ysc3839  
       2019-10-04 20:21:31 +08:00 via Android
    @abczise 那些“属性”只是一些 bitset flag,比如控制是否显示这类的,不是你想的可以读取出图片。
    WinCloud
        7
    WinCloud  
       2019-10-04 21:27:34 +08:00 via Android
    应该可以通过 UI automtic 接口获取控件位置,再用窗口句柄截图吧。能显示出来的图片基本都是 RGBA 格式了,有些 GPU 绘制的控件,图片数据可能会存到显存里,内存上找不到的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1441 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:30 · PVG 01:30 · LAX 09:30 · JFK 12:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.