Windows剪贴板无法复制超大Excel数据?问题与超时设置有关
伴随 Windows 发展已超 25 年的 Raymond Chen,刚刚在一篇《The Old New Thing》开发者博客中调侃了系统剪贴板(clipboard)存在的所谓“最大数据限制”Bug 。他以行数 30 万+的一份大型电子表格文件为例,当用户打开后选中了所有行、并将之复制到剪贴板后,就会在粘贴至另一应用程序时遇到问题。
访问:
阿里云6月“云上特卖”活动上线 赢取最高500元代金券
假设这个应用程序使用了 GetClipboardData 函数,以检索富文本格式的数据。那你就会遗憾地发现 —— 函数竟然返回了空值(NULL)。
许多人或许会猜测,该问题或与剪贴板的数据上限有关。
然而 Raymond Chen 指出,事情并非如此 。
剪贴板未预设可提取数据的最大值,其内容仅受可用内存和地址空间的限制。
为避免 GetClipboardData 调用失败,主要有两种替代方案 —— 一种是将数据直接放到剪贴板,另一种就声明拥有特定类型的数据、而不直接将它放到剪贴板上。
对于很少被使用、或生成资源耗费过高的数据格式时,常见优化方案是利用剪贴板的延迟渲染(delay-rendered)。
然后在被询问数据的格式时,数据源的使用者会收到一条 WM_RENDERFORMAT 消息 —— 某人想调用该数据,你是否选择即时生成?
Raymon Chen 解释称:
Excel 本身无法以富文本格式运行,其放置在剪贴板上的此类数据,都是延迟渲染得来的。
然后当另一个程序要求提供富文本格式数据时,Excel 会给出这样的回应 —— 哦,好的,请稍等,我这就帮你去拿。
据悉,富文本并不是数据表的最佳格式,因为它主要是为了文本而设计的。即使可以搞定简单的表格,但更复杂的任务就跑不顺了。
当系统要求剪贴板的所有者呈现数据时,它会发送消息并等待最多 30 秒返回。
若未能在 30 秒内生成数据,则系统会放弃请求、并导致 GetClipboardData 返回 NULL 空值。
本例的问题,在于原表实在太大,导致 Excel 需要超过 30 秒才能生成富文本格式表。后续开发团队会设想通过特殊手段,来延长此类处理的等待时间。
推荐
-
头号工程负责人卸任 Meta又一次遭受高管变动冲击
Facebook 母公司 Meta 最近出现人事动荡。在首席运营官雪莉・桑德伯格 (Sheryl Sandberg) 和 AI...
来源:凤凰科技 -
对簿公堂后变成战友 Waymo和Uber正在合作研发无人驾驶卡车
对簿公堂后,Waymo 和 Uber 变成战友。Waymo 和 Uber 联手搞自动驾驶了!据外媒 The Verge 报道...
来源:车东西 -
-
-
-
-
巴西全国有多少辆电动汽车 巴西纯电动汽车有多少辆?
巴西联邦共和国(葡萄牙语:República Federativa do Brasil;英语:The Federative Republic of Brazil),简称巴西(Brazil)。
来源:科技日报 -
-
-
在2030年前实现普遍且有意义的数字连接 国际电信联盟宣布新具体目标
日前,联合国和其下属机构国际电信联盟(ITU)宣布了一套新的联合国具体目标,即在2030年前实现普遍且有意...
来源:人民邮电报
直播更多》
-
本田和LG新能源考虑在美国合建新电池厂 俄亥俄州被认为具有候选优势
从多位消息人士处知悉,本田汽车和 LG...
-
本田和LG新能源考虑在美国合建新电池厂 俄亥俄州被认为具有候选优势
从多位消息人士处知悉,本田汽车和 LG...
-
高性能CPU商业化动作不断 欧洲自主处理器技术成果转化进入加速期
作为欧盟资助的欧洲处理器倡议(European...
-
涉嫌错报虚假账号数量 美国得州对推特展开调查
美国得州总检察长肯・帕克斯顿 (Ken P...
-
员工工作会面临哪些不确定性 如何消除在工作中面临的不确定性?
员工工作会面临哪些不确定性?员工的工作...
-
华灿光电怎么样 华灿光电哪个部门好?
华灿光电公告,公司拟以全资子公司华灿...