win不粘贴10系统文本
(win10不能复制粘贴文件)
伴随 Windows 发展已超 25 年的 Raymond Chen,刚刚在一篇《The Old New Thing》开发者博客嘲笑系统剪贴板(clipboard)所谓存在的最大数据限制Bug 。他以行数 30 万 以大型电子表格文件为例。当用户打开并将其复制到剪贴板上时,他们在粘贴到另一个应用程序时会遇到问题。
假设使用此应用程序 Get-Clipboard-Data 以富文本格式检索数据的函数。然后你会后悔发现 —— 函数回到了空值(NULL)。
很多人可能会猜测,这个问题可能与剪贴板的数据上限有关。
然而 Raymond Chen 并非如此 。
剪贴板未预设可提取数据的最大值,其内容仅限于可用内存和地址空间。
为避免 Get-Clipboard-Data 调用失败主要有两种替代方案 —— 一种是将数据直接放在剪贴板上,另一种是声明有特定类型的数据,而不是直接放在剪贴板上。
对于很少使用或生成资源消耗过高的数据格式,常见的优化方案是使用剪贴板的延迟渲染(delay-rendered)。
然后,当被问及数据格式时,数据源用户将收到一个 WM_RENDERFORMAT 消息 —— 有人想调用这个数据,你选择立即生成吗?
Raymon Chen解释称:
Excel 它本身不能以富文本的形式运行,放置在剪贴板上的数据被延迟渲染。
当另一个程序要求提供富文本格式数据时,Excel 会给出这样的回应 —— 哦,好的,请稍等,我帮你拿。
富文本不是数据表的最佳格式,因为它主要是为文本设计的。即使你能得到一个简单的表格,更复杂的任务也不会顺利运行。
当系统要求剪贴板的所有者显示数据时,它会发送信息并等待最多 30 秒返回。
若未能在 30 如果数据在秒内生成,系统将放弃请求并导致 GetClipboardData 返回 NULL 空值。
本例的问题在于原表太大,导致 Excel 需要超过 30 富文本格式表只能在秒内生成。后续开发团队将设想通过特殊手段延长等待时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。