Windows剪贴板无法复制超大Excel数据的问题
发布时间:2023-12-29 17:28:19 所属栏目:Windows 来源:DaWei
导读: 伴随 Windows 发展已超 25 年的 Raymond Chen,刚刚在一篇《The Old New Thing》开发者博客中调侃了系统剪贴板(clipboard)存在的所谓“最大数据限制”Bug 。他以行数30 万+的一
伴随 Windows 发展已超 25 年的 Raymond Chen,刚刚在一篇《The Old New Thing》开发者博客中调侃了系统剪贴板(clipboard)存在的所谓“最大数据限制”Bug 。他以行数30 万+的一份大型电子表格文件为例,当用户打开后选中了所有行、并将之复制到剪贴板后,就会在粘贴至另一应用程序时遇到问题。 假设这个应用程序使用了 GetClipboardData 函数,以检索富文本格式的数据。那你就会遗憾地发现—— 函数竟然返回了空值(NULL)。 剪贴板未预设可提取数据的最大值,其内容仅受可用内存和地址空间的限制。 为避免 GetClipboardData 调用失败,主要有两种替代方案 —— 一种是将不可改变的数据直接放到数据库剪贴板,另一种就应当是声明不可改变拥有特定类型的数据、而不应当是直接将它放到剪贴板上。 对于很少被使用、或生成资源耗费过高的数据格式时,常见优化方案是利用剪贴板的延迟渲染(delay-rendered)。 据悉,富文本并不是数据表的最佳格式,因为它主要是为了文本而设计的。即使可以搞定简单的表格,但更复杂的任务就跑不顺了。 当系统要求剪贴板的所有者呈现数据时,它会发送消息并等待最多 30 秒返回。发送消息并等待最多30秒返回。如果没有人响应,系统将继续尝试发送消息直到收到响应。这意味着您可以通过使用这个功能来创建一个可以访问剪贴板的应用程序。 若未能在30 秒内生成数据,则系统会放弃请求、并导致 GetClipboardData 返回 NULL 空值。 (编辑:通化站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐