VIsta中的图标提取

时间:2009-08-03 12:43:09

标签: c# windows-vista icons

用于提取我正在使用的特殊文件夹图标

ExtractIconEx(Environment.SystemDirectory + "\\shell32.dll",ncIconIndex, handlesIconLarge, handlesIconSmall, 1);

这里我明确地传递了特殊文件夹的nIconIndex,如MyDocs,MyPictures ..etc 它在XP中运行良好,但在Vista中它没有检索到正确的图标..它检索黄色文件夹图标..不应该是这种情况。 Cn任何人帮助我...

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

Vista添加了一个名为SHGetStockIconInfo的新API,但它不支持我的文档AFAIK。但这并不重要,因为您应该使用的方法适用于XP和Vista(当用户选择自定义图标时,您当前的解决方案将不起作用,您只需要查看硬编码的系统dll,这可能会随时改变)

因此,您应该做的是,将路径或PIDL获取到您感兴趣的shell文件夹(SHGetFolderPath和朋友),并将该路径/ PIDL传递给SHGetFileInfo。 SHGetFileInfo可以为您提供图标句柄,或索引到系统图像列表。

我不确定这些函数的.NET等价物是什么,但你应该能够弄明白,或使用PInvoke

答案 2 :(得分:0)

我在这个领域看到的最好的例子来自.NET(这是用VB.NET完成的)就在本文中。

http://www.codeproject.com/KB/cpp/VbNetExpTree.aspx

我的$ .02是由于需要COM互操作级别和API的复杂性,使用shell API非常痛苦。