如何在HTA中获取文件的关联图标(HTML/Javascript/VBScript)

Pat*_*ick 13 html javascript vbscript wsh hta

我正在构建一个HTA应用程序,我需要在其中显示一个文件列表及其相关的系统图标.
我正在使用FileSystemObject列出文件,但似乎无法获取图标...

我在VBS中找到了一个可以将文件图标保存为.ico的脚本.
它读取文件(PE资源文件,.exe或dll)并解析图标数据.我修改了该脚本以返回图标的字节,将其转换为base64并在HTML中使用嵌入的base64图像.这是原始脚本:http://gilpin.us/IconSiphon/

问题

  1. )在大多数情况下,.ico包含多个图标(许多尺寸和颜色深度),但我无法指定使用哪一个(因为我需要16x16图标).

  2. )并非所有图标都显示

  3. )因为它读取exe和dll,所以文件可能很慢(但我很好,我可以缓存已经获取的图标)

我也试过一些ActiveX控件,但似乎都没有正常工作.甚至微软提供的那些(ShellFolderView或ListView)都非常错误.

要求

  • 必须显示16x16图标

  • 必须允许多个文件选择

  • 一切都必须嵌入hta(如果可能的话).没有外部.exe

有谁知道实现这一目标的方法?

谢谢!

Sea*_*ase 1

将 SHGetFileInfo() 与 SHGFI_ICON 标志一起使用。

http://msdn.microsoft.com/en-us/library/windows/desktop/bb762179(v=vs.85).aspx