コード例 #1
0
 private static Icon GetSystemIcon(string path, IconSizeEnum iconsize)
 {
     try
     {
         Win32.SHFILEINFO psfi        = new Win32.SHFILEINFO();
         int         dwFileAttributes = 128;
         Win32.SHGFI uFlags           = Win32.SHGFI.SHGFI_SYSICONINDEX;
         if (Win32.SHGetFileInfo(path, dwFileAttributes, out psfi, (uint)Marshal.SizeOf((object)psfi), uFlags) == 0)
         {
             return((Icon)null);
         }
         int              i    = psfi.iIcon;
         Guid             riid = new Guid("46EB5926-582E-4017-9FDF-E8998DAA0950");
         Win32.IImageList ppv;
         Win32.SHGetImageList((int)iconsize, ref riid, out ppv);
         IntPtr picon = IntPtr.Zero;
         int    flags = 1;
         ppv.GetIcon(i, flags, ref picon);
         Icon icon = (Icon)Icon.FromHandle(picon).Clone();
         Win32.DestroyIcon(psfi.hIcon);
         return(icon);
     }
     catch
     {
     }
     return((Icon)null);
 }
コード例 #2
0
        private static string ResolveShareName(string path)
        {
            Win32.SHFILEINFO shfi   = new Win32.SHFILEINFO();
            Win32.SHGFI      dwflag = Win32.SHGFI.SHGFI_DISPLAYNAME | Win32.SHGFI.SHGFI_TYPENAME;
            int dwAttr = 0;

            dwflag = dwflag | Win32.SHGFI.SHGFI_USEFILEATTRIBUTES;
            dwAttr = 0x80;
            Win32.SHGetFileInfo(path, dwAttr, ref shfi, Win32.cbFileInfo, Convert.ToInt32(dwflag));
            string result = shfi.szDisplayName;

            return(result);
        }
コード例 #3
0
 private static Icon GetIcon(string path)
 {
     try
     {
         Win32.SHFILEINFO psfi   = new Win32.SHFILEINFO();
         Win32.SHGFI      uFlags = (Win32.SHGFI)(256 | (int)Globals.RuntimeSettings["defaultFileIconType"]);
         if (Win32.SHGetFileInfo(path, 0, out psfi, (uint)Marshal.SizeOf((object)psfi), uFlags) == 0 || psfi.hIcon == IntPtr.Zero)
         {
             return((Icon)null);
         }
         Icon icon = (Icon)Icon.FromHandle(psfi.hIcon).Clone();
         Win32.DestroyIcon(psfi.hIcon);
         return(icon);
     }
     catch
     {
     }
     return((Icon)null);
 }
コード例 #4
0
        /// <summary>
        /// Get the associated Icon for a file or application, this method always returns
        /// an icon. If the strPath is invalid or there is no icon, the default icon is returned.
        /// </summary>
        public static Icon GetFolderIcon(String path, Boolean small, Boolean overlays)
        {
            Win32.SHFILEINFO info       = new Win32.SHFILEINFO(true);
            Int32            cbFileInfo = Marshal.SizeOf(info);

            Win32.SHGFI flags = Win32.SHGFI.Icon | Win32.SHGFI.UseFileAttributes;
            if (small)
            {
                flags |= Win32.SHGFI.SmallIcon;
            }
            else
            {
                flags |= Win32.SHGFI.LargeIcon;
            }
            if (overlays)
            {
                flags |= Win32.SHGFI.AddOverlays;           // Get overlays too...
            }
            Win32.SHGetFileInfo(path, 0x00000010, out info, (UInt32)cbFileInfo, flags);
            Icon icon = (Icon)Icon.FromHandle(info.hIcon).Clone();

            Win32.DestroyIcon(info.hIcon);
            return(icon);
        }
コード例 #5
0
ファイル: Win32.cs プロジェクト: jamisonlu/CygwinPortable
 public static extern int SHGetFileInfo(string pszPath, int dwFileAttributes, out Win32.SHFILEINFO psfi, uint cbfileInfo, Win32.SHGFI uFlags);