我正在使用(.Res)资源文件进行探索,并在delphi.about.com网站上找到了一个有用的教程。
教程链接: http://delphi.about.com/od/objectpascalide/l/aa113099a.htm
下载测试项目: http://delphi.about.com/library/aboutres.zip
我发现Windows资源管理器中的应用程序图标不同。 “申请表”上的图标正确显示(参见图2)。 Windows任务栏上的图标正确显示(请参阅图3)。
但是当我浏览它时,Windows资源管理器中的图标是错误的(参见图1)。它不是Res文件中的MAINICON。
知道它有什么问题吗? 我需要配置什么才能使用.EXE文件获取正确的应用程序图标?
图片编号(1)
图片编号(2)
图片编号(3)
提前致谢
答案 0 :(得分:4)
没有提示显示哪个图标,shell会选择ID最低的图标,或者按字母顺序排列的第一个图标。您的可执行文件中有三个图标:ICOFOLD,ICOOK和MAINICON。 ICOFOLD是要在shell文件夹中显示的那个。
程序运行后,通过发送WM_SETICON
消息来设置任务栏或表单图标。因此,那里没有猜测。
答案 1 :(得分:1)
“任务栏和表单”窗口中的图标是准确的,因为它们直接来自正在运行的进程的资源。
另一方面,Windows资源管理器caches icons,有时该缓存会损坏或不同步。这是Windows资源管理器的一个众所周知的问题。它与您的应用程序无关。有很多第三方工具可用于修复图标缓存。
答案 2 :(得分:0)
您只需运行以下命令即可清除图标缓存:
ie4uinit.exe -ClearIconCache
对于Windows 10,使用:
ie4uinit.exe -show