开发者

Get large icon from file extension

There are several places that talk about how to get an icon from a file extension such as this one and this other one. After several hours of playing around with this kind of projects I have managed to build something like:

private void addButton_Click(object sender, System.EventArgs e)
    {           
        System.Drawing.Icon temp = IconReader.GetFileIcon(".cs", IconReader.IconSize.Large, false);
        pictureBox1.Image = temp.ToBitmap();
    }

the execution of that button gets me:

Get large icon from file extension

but I am trying to actually get the large icon. Note how the icons on windows are much bigger:

Get large icon from file extension

How could I get that icon instead of the smaller one. I have spend so much time changing the other programs. Moreover I will like to make it work with wpf and most of the examples are with windows forms. I would appreciate if I can get an example of how to extract a files icon instead of modifying and entire project. If that is not possible that would still be very helpful and I will appreciate. It's just that I am not that good of a 开发者_如何学编程programmer and it took me a lot of time to modify the other examples.


here's a solution http://www.codeproject.com/KB/WPF/filetoiconconverter.aspx


The code you're referencing only uses 2 sizes:

public const uint SHGFI_LARGEICON = 0x000000000;     // get large icon
public const uint SHGFI_SMALLICON = 0x000000001;     // get small icon

to get the extra_large size, you need to add your own define (and add another enum for calling functions):

public const uint SHGFI_EXTRALARGEICON = 0x000000002;     // get extra large icon

or if you just want a quick fix, replace 0x000000000 with 0x000000002 in the original large definition.

Here are all icon sizes: http://msdn.microsoft.com/en-us/library/windows/desktop/bb762185%28v=vs.85%29.aspx


You cannot make ShGetFileInfo return ExtraLarge and Jumbo icons.

Instead,

1) Call ShGetFileInfo with the SysIconIndex ( 0x000004000) flag   2) Get the System Imagelist with the proper size using ShGetImageList 3) Get the HICON using ImageList_GetIcon and the .iIcon value from SHFILEINFO.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜