例如,我输入 .TXT的时候,就在picturebox 显示上 文本文件 txt的图标输入.rar 就显示  winrar 的图标?这个功能该如何去实现之?

解决方案 »

  1.   

    DllImport("shell32")]   
      private static extern int ExtractIcon(int hinst, string lpszExeFileName, int nIconIndex);   
    int icons = ExtractIcon(0, Application.ExecutablePath, 0); 
     [DllImport("Shell32.dll")]
            private static extern int SHGetFileInfo
              (
              string pszPath,
              uint dwFileAttributes,
              out   SHFILEINFO psfi,
              uint cbfileInfo,
              SHGFI uFlags
              );
     
            [StructLayout(LayoutKind.Sequential)]
            private struct SHFILEINFO
            {
                public SHFILEINFO(bool b)
                {
                    hIcon = IntPtr.Zero; iIcon = 0; dwAttributes = 0; szDisplayName = ""; szTypeName = "";
                }
                public IntPtr hIcon;
                public int iIcon;
                public uint dwAttributes;
                [MarshalAs(UnmanagedType.LPStr, SizeConst = 260)]
                public string szDisplayName;
                [MarshalAs(UnmanagedType.LPStr, SizeConst = 80)]
                public string szTypeName;
            };
     
            private ExtractIcon()
            {
            }
     
            private enum SHGFI
            {
                SmallIcon = 0x00000001,
                LargeIcon = 0x00000000,
                Icon = 0x00000100,
                DisplayName = 0x00000200,
                Typename = 0x00000400,
                SysIconIndex = 0x00004000,
                UseFileAttributes = 0x00000010
            }
     
            /**//// <summary>
            /// 获取文件、文件夹的小图标
            /// </summary>
            /// <param name="strPath">文件、文件夹路径</param>
            /// <returns>图标</returns>
            public static Icon GetIcon(string strPath)
            {
                SHFILEINFO info = new SHFILEINFO(true);
                int cbFileInfo = Marshal.SizeOf(info);
                SHGFI flags;
                flags = SHGFI.Icon | SHGFI.SmallIcon;
                SHGetFileInfo(strPath, 256, out   info, (uint)cbFileInfo, flags);
                return Icon.FromHandle(info.hIcon);
            }
      

  2.   

    参照   http://www.pinvoke.net/default.aspx/shell32.shgetfileinfo