You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 10.4.2程序间歇性图标黑底:comctl32.dll双版本加载问题

Delphi 10.4.2 32位Windows 11应用间歇性黑底图标与comctl32.dll双版本加载问题

问题现象

  • 32位VCL应用在Windows 11上间歇性出现图标黑底(丢失透明效果),每日发作数次,无法稳定复现
  • 触发问题后立即重启程序可恢复,但需间隔30-60分钟重启才会再次出现该问题
  • 异常状态下调用TImageList.Assign()会抛出Failed to write ImageList data to stream异常,代码示例:
var imgList1 := TImageList.Create(nil);
imgList1.Assign(imgList2);

排查情况

  • 问题发作时,通过Process Explorer观察到程序同时加载了comctl32.dll的5.*和6.*版本;正常运行时仅加载6.*版本
  • 空VCL窗体应用的Dependency Viewer依赖树中虽显示同时依赖两个版本,但实际运行时仅加载6.*,无异常
  • 尝试添加显式应用清单,效果与Delphi自动生成的清单一致,未解决问题
  • 多个代码关联度较低的应用均出现此问题,且自上次无异常版本以来,未发现明显问题代码提交

临时 workaround(效果不可靠)

  • 启动时调用TImageList.Assign()进行问题检测
  • 检测到comctl32.dll双版本加载时自动静默重启程序

核心疑问

该问题的根本成因是什么?

内容的提问来源于stack exchange,提问作者Phil B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 15:42:35