Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > по расширению файла получить приложение


Автор: NilovSerge 27.2.2008, 15:12
Всем привет!
Как по расширению файла получить приложение в Виндах  для данного файла и его пиктограмку ?


  заранее спасибо

Автор: vponomarov 27.2.2008, 16:31
Вот кусок кода, для получения иконки файла по его расширению:
Код

using System.Runtime.InteropServices;

    [StructLayout(LayoutKind.Sequential)]
    public struct SHFILEINFO
    {
        public IntPtr hIcon;
        public IntPtr iIcon;
        public uint dwAttributes;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
        public string szDisplayName;
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
        public string szTypeName;
    };

    class Win32
    {
        public const uint SHGFI_ICON = 0x100;
        public const uint SHGFI_LARGEICON = 0x0; // 'Large icon
        public const uint SHGFI_SMALLICON = 0x1; // 'Small icon

        [DllImport("shell32.dll")]
        public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);
    }

**********

ImageList fileIcons=new ImageList();
SHFILEINFO shinfo = new SHFILEINFO();
IntPtr hImgSmall = Win32.SHGetFileInfo(tag, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON);
fileIcons.Images.Add(ext, System.Drawing.Icon.FromHandle(shinfo.hIcon));


вроде так, если ничего важного не пропустил.
если что-то не заработает, пиши. Подправим!

Автор: Experimenter 27.2.2008, 19:11
Для пиктограммки:
Код

private void ExtractAssociatedIconEx()
{
    Icon ico =
        Icon.ExtractAssociatedIcon(@"C:\WINDOWS\system32\notepad.exe");
    this.Icon = ico;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)