我正在使用SHGetFileInfo
来获取文件夹图标。除了在“我的电脑”特殊文件夹--CLSID SHGetFileInfo
上调用::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
外,一切正常。对于调用SHGetFileInfo
后的特定情况,SHFILEINFO.hIcon
结构的值为零。这种情况发生在Windows 7上。早期的WinXP代码工作正常。
我用来调用SHGetFileInfo
的标记是SHGFI_ICON
和SHGFI_SMALLICON
,所以没什么特别的。
可能是什么原因造成的?如何在Windows 7上获取“我的电脑”图标?
答案 0 :(得分:0)
您必须首先使用SHGetSpecialFolderLocation获取“我的电脑”的PIDL,然后将此PIDL作为SHGetFileInfo的第一个参数传递。
IntPtr pidl;
SHGetSpecialFolderLocation(0, CSIDL_DRIVES, pidl);
SHGetFileInfo(pidl, 0, shinfo, Marshal.SizeOf(shinfo), (SHGFI_PIDL | SHGFI_DISPLAYNAME | SHGFI_ICON | SHGFI_SMALLICON));
答案 1 :(得分:0)
我决定直接使用ExtractIconEx
并从MyComputer
(图标索引15)阅读shell32.dll
图标。与Win API不同,似乎图标列表不会改变:)