伴随 Windows 发展已超 25 年的 Raymond Chen,刚刚在一篇《The Old New Thing》开发者博客中调侃了系统剪贴板(clipboard)存在的所谓“最大数据限制”Bug 。他以行数 30 万+的一份大型电子表格文件为例,当用户打开后选中了所有行、并将之复制到剪贴板后,就会在粘贴至另一应用程序时遇到问题。
假设这个应用程序使用了 GetClipboardData 函数,以检索富文本格式的数据。那你就会遗憾地发现 —— 函数竟然返回了空值(NULL)。
许多人或许会猜测,该问题或与剪贴板的数据上限有关。
然而 Raymond Chen 指出,事情并非如此 。
剪贴板未预设可提取数据的最大值,其内容仅受可用内存和地址空间的限制。
为避免 GetClipboardData 调用失败,主要有两种替代方案 —— 一种是将数据直接放到剪贴板,另一种就声明拥有特定类型的数据、而不直接将它放到剪贴板上。
对于很少被使用、或生成资源耗费过高的数据格式时,常见优化方案是利用剪贴板的延迟渲染(delay-rendered)。
然后在被询问数据的格式时,数据源的使用者会收到一条 WM_RENDERFORMAT 消息 —— 某人想调用该数据,你是否选择即时生成?
Raymon Chen 解释称:
Excel 本身无法以富文本格式运行,其放置在剪贴板上的此类数据,都是延迟渲染得来的。
然后当另一个程序要求提供富文本格式数据时,Excel 会给出这样的回应 —— 哦,好的,请稍等,我这就帮你去拿。
据悉,富文本并不是数据表的最佳格式,因为它主要是为了文本而设计的。即使可以搞定简单的表格,但更复杂的任务就跑不顺了。
当系统要求剪贴板的所有者呈现数据时,它会发送消息并等待最多 30 秒返回。
若未能在 30 秒内生成数据,则系统会放弃请求、并导致 GetClipboardData 返回 NULL 空值。
本例的问题,在于原表实在太大,导致 Excel 需要超过 30 秒才能生成富文本格式表。后续开发团队会设想通过特殊手段,来延长此类处理的等待时间。
-
速看:腾讯2%股份进入香港中央结算系统根据香港交易所的数据,腾讯股东此前将1 93亿股股份转入了香...
-
热门:美团App首页改版,消息称未来流量将更多倾斜至商超零售据界面新闻报道,今日,多名用户反馈,美团App首页改版,打开...
-
每日播报!Netflix据悉正采取措施削减成本,包括缩减房地产规模、雇佣更多初级员工等据华尔街日报消息,在用户增长放缓的情况下,Netflix希望节省...
-
世界微头条丨多家航空公司推出赏月航班,计划执行的航班为1607个据央视财经报道,中秋假期临近,今年的中秋节月亮是标准的“...
-
每日速递:市场已有iPhone 14加价代预约服务,费用为200至600元据时代周报报道,北京时间今日凌晨,主题为“超前瞻”的2022...
-
每日短讯:苹果官网下架iPhone13Pro,降价促销iPhone13苹果下调了iPhone13售价,iPhone13降价促销。此外,iPhone13P...
-
天天亮点!iOS16将支持检测假冒AirPods耳机,并在iPhone上发出警告据IT之家报道,在此前的iOS系统中,当检测到非正品iPhone或iP...
-
全球快看点丨微软CFO出售近2000万美元股票,平均每股259.46美元根据美国证券交易委员会(SEC)的公开文件,微软CFOAmyHood出...
-
每日动态!联想推出“夺笋”APP:可一站式解决电脑问题今天,联想推出了一款名叫夺笋”的APP,安卓 iOS均可参与内...
-
天天即时看!消息称“抖音盒子”将暂停运营,内部员工已经开始转岗流程据36氪报道,多位知情人士称,字节跳动旗下的独立电商App“抖...
- 智联世界,元生无界!快手虚拟人IP亮相2022人工智能大会
2022-09-07 10:47:54
- 机器人界“奥林匹克”!2022世界机器人大会8月18日举行
2022-08-10 09:58:58
- 2025年全球人口将达到90亿!机器人将在农业领域大显身手
2022-07-14 09:41:10
- 中科院院士蒋华良:AI+分子模拟与药物研发将大有可为
2022-07-14 09:37:00
- “千垛之城荷你有约” 2022兴化市荷文化旅游节正式开幕
2022-07-07 09:28:34