加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 如何确定剪贴板数据大小?

发布时间:2020-12-14 01:53:41 所属栏目:Windows 来源:网络整理
导读:我在剪贴板中有一个自定义数据格式(由第三方程序放在那里). 我使用以下方法从剪贴板中获取数据的大小: HANDLE data = GetClipboardData(format);DWORD len = GlobalSize(data); 问题是,我得到的数据大小不正确(实际应该是大约100字节).我的意思是,剪贴板中
我在剪贴板中有一个自定义数据格式(由第三方程序放在那里).
我使用以下方法从剪贴板中获取数据的大小:

HANDLE data = GetClipboardData(format);
DWORD len = GlobalSize(data);

问题是,我得到的数据大小不正确(实际应该是大约100字节).我的意思是,剪贴板中真实“有效”数据的大小是不同的.此外,我从一个调用到另一个调用获得不同的(!)数据大小(尽管数据本身不会改变).看起来很神秘.我的意思是,如果我只是继续在循环中执行上面的两行,那么对于这种格式,我将在“len”中得到不同的值.

所以我基本上有两个问题……

>为什么“GlobalSize”可能会针对相同的数据将非常量值从一个调用返回到另一个调用?
>如何以此格式获取剪贴板数据的“实际”数据大小?

先感谢您!

解决方法

GlobalSize功能的MSDN页面:

The size of a memory block may be larger than the size requested when
the memory was allocated

因此,您不能依赖GlobalSize来返回所请求的分配大小.相反,您应该将大小作为数据对象本身的一部分传递(例如,以包含大小的DWORD开头,然后是数据).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读