예제 #1
0
        public void GetInfo(bool folder)
        {
            FileIcon.SHFILEINFO shfileinfo;

            if (fileIcon != null)
            {
                fileIcon.Dispose();
            }
            fileIcon    = null;
            typeName    = "";
            displayName = "";
            shfileinfo  = new FileIcon.SHFILEINFO();
            uint ui = (uint)Marshal.SizeOf(shfileinfo.GetType());
            int  i1 = FileIcon.SHGetFileInfo(fileName, folder ? 0x10 : 0, ref shfileinfo, ui, (uint)flags);

            if (i1 != 0)
            {
                if (shfileinfo.hIcon != IntPtr.Zero)
                {
                    fileIcon = Icon.FromHandle(shfileinfo.hIcon);
                }
                typeName    = shfileinfo.szTypeName;
                displayName = shfileinfo.szDisplayName;
            }
            else
            {
                int i2 = FileIcon.GetLastError();
                Console.WriteLine("Error {0}", i2);
                string s  = new String('\0', 0x100);
                int    i3 = FileIcon.FormatMessage(0x1200, IntPtr.Zero, i2, 0, s, 0x100, 0);
                Console.WriteLine("Len {0} text {1}", i3, s);
            }
        }
예제 #2
0
        public void GetInfo(bool folder)
        {
            FileIcon.SHFILEINFO shfileinfo;

            if (fileIcon != null)
                fileIcon.Dispose();
            fileIcon = null;
            typeName = "";
            displayName = "";
            shfileinfo = new FileIcon.SHFILEINFO();
            uint ui = (uint)Marshal.SizeOf(shfileinfo.GetType());
            int i1 = FileIcon.SHGetFileInfo(fileName, folder ? 0x10 : 0, ref shfileinfo, ui, (uint)flags);
            if (i1 != 0)
            {
                if (shfileinfo.hIcon != IntPtr.Zero)
                    fileIcon = Icon.FromHandle(shfileinfo.hIcon);
                typeName = shfileinfo.szTypeName;
                displayName = shfileinfo.szDisplayName;
            }
            else
            {
                int i2 = FileIcon.GetLastError();
                Console.WriteLine("Error {0}", i2);
                string s = new String('\0', 0x100);
                int i3 = FileIcon.FormatMessage(0x1200, IntPtr.Zero, i2, 0, s, 0x100, 0);
                Console.WriteLine("Len {0} text {1}", i3, s);
            }
        }
예제 #3
0
 private static extern int SHGetFileInfo(string pszPath, int dwFileAttributes, ref FileIcon.SHFILEINFO psfi, uint cbFileInfo, uint uFlags);