在.Net(C#或VB:不关心)中,给定真实文件的文件路径字符串,FileInfo结构或FileSystemInfo结构,如何确定shell(资源管理器)使用的图标文件?
我目前没有计划将它用于任何事情,但是当我看到这个问题时,我对如何做到这一点感到好奇,我认为在SO上存档是有用的.
由于科迪灰色提到回答我的其他问题时,在这里,雷蒙德陈谈论覆盖图标怎么都一个糟糕的选择在这里(请注意,文章是一岁).
反叠加的实质性论点是,一次只能显示一个......所以,如果两个适用,哪一个获胜?一个似是而非的论点是,只有15个 - 我认为这是微软的设计选择,而不是反对其功效的论据.
随着文件拓扑的变化:
我相信文件和文件夹需要等效的状态指示器才能立即识别其状态.
什么是图标叠加的替代方法,它在文件/文件夹的状态上呈现相同的即时可视队列?也许需要一个新的图标模型?
编辑:
2010-12-14
我越是想到这一点,我就越觉得只有一个叠加层并且无法使叠加层一起工作的想法是荒谬的.
除非出于技术原因,否则您不能有多个叠加层?
考虑(在我的头顶):
我为我的文件制作了一个图标叠加层*.myfile,但叠加层大小错误.当图标显示为16x16大小时,叠加层将覆盖图标.
如何更改叠加尺寸?(IShellIconOverlayIdentifier)

我正在用java创建一个文件夹和文件树.Windows和OSX使用以下代码返回系统图标和名称:
new JFileChooser().getIcon(File f);
new JFileChooser().getName(File f);
Run Code Online (Sandbox Code Playgroud)
是否有可能获得unix系统的图标和名称?系统命令也可以.
谢谢.
我真的很喜欢KDE SC 4的氧气外观.我写了一个程序将这些图标应用到windows.该程序是用NSIS编写的,目前几乎完全正常运行.但是,我发现让Windows了解图标更改的唯一方法是杀死explorer.exe,删除图标缓存,并重新生成explorer.exe.SHChangeNotify与SHCNE_ASSOCCHANGED似乎无法使Windows知道的更改控制面板图标,我的电脑图标,等请提出一个更好的,那么残酷的方法来让Windows识别这些更改.
编辑:我发现了一个名为Icon Tweaker的程序似乎能够做到这一点,但它是封闭的来源,所以我不知道它是如何做到的.(IconTweaker:http://www.crystalxp.net/galerie/en.id.83-icontweaker.html )
编辑:感谢Anders的回复(见下文),我的工作正常.但是,我会把我工作的NSIS代码放在这里,万一其他人需要它
ReadRegStr $0 HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size"
IntOp $0 $0 + 1
WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0
SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000
IntOp $0 $0 - 1
WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0
SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000
Run Code Online (Sandbox Code Playgroud)
$ 0寄存器用于存储Shell Icon Size值HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics.然后我们递增值并执行a SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 100000, NULL),然后递减并重新发送.
编辑:作为奖励,这可以用作在Windows …