I am using Icon.ExtractAssociatedIcon to get the icon of a file , that a user selects, in an openfiledialog.
THe problem is if the user selects an icon from a netw
Looking at this with Reflector, it is ultimately calling ExtractAssociatedIcon
in shell32.dll
.
Have you tried the going around the BCL accessing it via PInvoke?
Sample code (via 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