gpt4 book ai didi

.net - 如何从网络共享文件中获取关联的图标

转载 作者:行者123 更新时间:2023-12-03 11:06:55 25 4
gpt4 key购买 nike

我正在使用 Icon.ExtractAssociatedIcon 来获取用户在 openfiledialog 中选择的文件的图标。

问题是如果用户从网络共享中选择一个图标,那么 openfiledialog 的文件名属性是 UNC 格式,这会导致 ArgumentExceptionExtractAssocaitedIcon :

Value of '\\server\share\filename' is not valid for 'filePath'.

Stack Trace:
at System.Drawing.Icon.ExtractAssociatedIcon(String filePath, Int32 index)

所以我的问题给出了一个指定为 \\server\share\filename 的文件,我如何获得图标?

注: .NET 2.0

最佳答案

Reflector 看着这个,它最终调用 ExtractAssociatedIconshell32.dll .

您是否尝试过绕过 BCL 通过 PInvoke 访问它?

示例代码(通过 PInvoke.Net ):

[DllImport("shell32.dll", CharSet = CharSet.Unicode)]
static extern IntPtr ExtractAssociatedIcon(IntPtr hInst, StringBuilder lpIconPath,
out ushort lpiIcon);

// ... snip
ushort uicon;
StringBuilder strB = new StringBuilder(260); // Allocate MAX_PATH chars
strB.Append(openFileDialog1.FileName);
IntPtr handle = ExtractAssociatedIcon(IntPtr.Zero, strB, out uicon);
Icon ico = Icon.FromHandle(handle);

pictureBox1.Image = ico.ToBitmap();
// ... snip

关于.net - 如何从网络共享文件中获取关联的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1842226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com