史萊姆論壇

返回   史萊姆論壇 > 綜合討論二區 > 生活話題、日常閒聊、喇勒唬爛灌水區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』


 
 
主題工具 顯示模式
舊 2024-03-06, 02:53 PM   #2 (permalink)
版區管理員
 
魔術王子 的頭像
榮譽勳章
UID - 115097
在線等級: 級別:43 | 在線時長:2030小時 | 升級還需:82小時級別:43 | 在線時長:2030小時 | 升級還需:82小時級別:43 | 在線時長:2030小時 | 升級還需:82小時
註冊日期: 2004-01-13
住址: 魔術學園
文章: 3113
精華: 0
現金: 15491 金幣
資產: 2679131 金幣
預設

語法:
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);
            }
        }
    }
}
分享這幾天研究的經驗
魔術王子 目前離線  
送花文章: 1550, 收花文章: 1603 篇, 收花: 3962 次
回覆時引用此帖
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 01:36 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2026, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1