Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SHGetFileInfo在未请求覆盖时返回带覆盖的图标_C#_.net_Winapi - Fatal编程技术网

C# SHGetFileInfo在未请求覆盖时返回带覆盖的图标

C# SHGetFileInfo在未请求覆盖时返回带覆盖的图标,c#,.net,winapi,C#,.net,Winapi,出于某种原因,调用.lnk文件的SHGetFileInfo会返回带有链接覆盖的图标,即使我没有请求它: Shell.SHGetFileInfo(path, 0, ref shFileInfo, (uint)Marshal.SizeOf(shFileInfo), SHGFI.ICON | SHGFI.SMALLICON | SHGFI.TYPENAME | SHGFI.DISPLAYNAME); 我正在使用shFileInfo.hIcon获取图标句柄(Windows7,x64)。关于为什么会发生

出于某种原因,调用.lnk文件的SHGetFileInfo会返回带有链接覆盖的图标,即使我没有请求它:

Shell.SHGetFileInfo(path, 0, ref shFileInfo, (uint)Marshal.SizeOf(shFileInfo),
SHGFI.ICON | SHGFI.SMALLICON | SHGFI.TYPENAME | SHGFI.DISPLAYNAME);

我正在使用shFileInfo.hIcon获取图标句柄(Windows7,x64)。关于为什么会发生这种情况,以及如何在没有覆盖的情况下获取图标的任何建议?

我最终能够通过在系统图像列表中获取图标的索引并使用ImageList\u GetIcon获取无覆盖图标的句柄来解决这一问题:


是否有人输入了SHGFI.DISPLAYNAME的值?它应该是0x200。SHGFI.ADDOVERLAYS是0x20。某人容易犯错误。已经考虑过的定义是:.ICON=0x100、.SMALLICON=0x1、.TYPENAME=0x400和.DISPLAYNAME=0x200。