我正在使用ExtractAssociatedIcon
检索文件图标的方法。我的希望是检索用户在资源管理器窗口中看到的相同图标。
public static Icon GetIcon(string fileName)
{
try
{
Icon icon = Icon.ExtractAssociatedIcon(fileName);
return icon;
}
catch
{
return null;
}
}
这在 99% 的情况下都有效。但是,如果用户链接到共享路径上的文件,例如\\SOME_SERVER\my documents\this file.pdf
它返回 null。它因文件路径不是有效路径的错误而落入“陷阱”。
它是一个有效的 URI(我已验证该文件存在、可读等),但不是带有 X:\some\folder 表示法的有效完全限定驱动器路径。
如果有的话,我该如何解决这个问题?
Thanks.
重新更新
(评论变成后 - CTIP)
查看链接在这里这最终导致P/Invoke.net使用以下代码:
[DllImport("shell32.dll")]
static extern IntPtr ExtractAssociatedIcon(IntPtr hInst, StringBuilder lpIconPath, out ushort lpiIcon);
[DllImport("shell32.dll")]
static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex);
_
ushort uicon;
StringBuilder strB = new StringBuilder(YOUR_FILE_PATH);
IntPtr handle = ExtractAssociatedIcon(this.Handle, strB, out uicon);
Icon ico = Icon.FromHandle(handle);
return ico.ToBitmap();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)