查看單個文章
舊 2024-03-06, 02:53 PM   #2 (permalink)
魔術王子
版區管理員
 
魔術王子 的頭像
榮譽勳章
UID - 115097
在線等級: 級別:42 | 在線時長:2004小時 | 升級還需:17小時級別:42 | 在線時長:2004小時 | 升級還需:17小時
註冊日期: 2004-01-13
住址: 魔術學園
文章: 3024
精華: 0
現金: 15110 金幣
資產: 2678740 金幣
預設

語法:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Toolstoy
{
    public partial class Form1 : Form
    {
        [StructLayout(LayoutKind.Sequential)]
        public struct SHFILEINFO
        {
            public IntPtr hIcon;
            public int iIcon;
            public uint dwAttributes;
            public string szDisplayName;
            public string szTypeName;
        };
        const uint SHGFI_ICON = 0x00000100;
        const uint SHGFI_LARGEICON = 0x00000000;
        const uint SHGFI_SMALLICON = 0x00000001;
        const uint SHGFI_SYSICONINDEX = 0x4000;
 
        [DllImport("shell32.dll")]
        public static extern IntPtr SHGetFileInfo(string filename, uint fileattributes, ref SHFILEINFO shfi, uint cbfi, uint flag);
        [DllImport("user32.dll")]
        public static extern bool DestroyIcon(IntPtr hIcon);
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            listView1.Items.Clear();
            listView1.Columns.Add("名稱", 300, HorizontalAlignment.Left);
            listView1.Columns.Add("大小", 100, HorizontalAlignment.Right);
            listView1.View = View.Details;
            //DirectoryInfo selDir = new DirectoryInfo(Environment.CurrentDirectory);
            DirectoryInfo selDir = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments));
            //this.Text=Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
 
            DirectoryInfo[] listDir;
 
            FileInfo[] listFile;
 
            try { }
 
            catch { }
 
            listDir = selDir.GetDirectories();
 
            listFile = selDir.GetFiles();
 
            foreach (DirectoryInfo d in listDir)
            {
                SHFILEINFO shfi = new SHFILEINFO();
                SHGetFileInfo(d.FullName, 0, ref shfi, (uint)Marshal.SizeOf(shfi), SHGFI_ICON | SHGFI_SMALLICON);
                Icon myicon = (Icon)Icon.FromHandle(shfi.hIcon).Clone();
                DestroyIcon(shfi.hIcon);
                imageList1.Images.Add("dir", myicon);
               ListViewItem lv = new ListViewItem(d.Name);
                lv.ImageKey = "dir";
                listView1.Items.Add(lv);
            }
 
 
            foreach (FileInfo d in listFile)
            {
                SHFILEINFO shfi = new SHFILEINFO();
                SHGetFileInfo(d.FullName, 0, ref shfi, (uint)Marshal.SizeOf(shfi), SHGFI_ICON | SHGFI_SMALLICON);
                Icon myicon = (Icon)Icon.FromHandle(shfi.hIcon).Clone();
                DestroyIcon(shfi.hIcon);
                imageList1.Images.Add(d.Extension, myicon);
                ListViewItem lv = new ListViewItem(d.Name);
                string num = d.Length.ToString();
                lv.ImageKey = d.Extension;
                lv.SubItems.Add(num);
                listView1.Items.Add(lv);
            }
        }
    }
}
分享這幾天研究的經驗
__________________
『唸金母心咒:嗡。金母。悉地。吽。』
持此咒者,可免一切瘟疫,一切瘟神抱頭四散。

魔術就是欣賞神奇的效果
如果魔術的秘密被破解了
那魔術就失去欣賞的價值
魔術王子 目前離線  
送花文章: 1537, 收花文章: 1560 篇, 收花: 3905 次
回覆時引用此帖