史萊姆論壇

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

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

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

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


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

語法:
Imports System.IO
Imports System.Runtime.InteropServices
Public Class Form1
    Private Structure SHFILEINFO
        Public hIcon As IntPtr ' : icon
        Public iIcon As Integer ' : icondex
        Public dwAttributes As Integer ' : SFGAO_ flags
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szDisplayName As String
        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> Public szTypeName As String
    End Structure
    Private Declare Ansi Function SHGetFileInfo Lib "shell32.dll" (ByVal pszPath As String, ByVal dwFileAttributes As Integer, ByRef psfi As SHFILEINFO, ByVal cbFileInfo As Integer, ByVal uFlags As Integer) As IntPtr
 
    Private Const SHGFI_ICON = &H100
    Private Const SHGFI_SMALLICON = &H1
    Private Const SHGFI_LARGEICON = &H0         ' Large icon
    Private nIndex = 0
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ListView1.Items.Clear()
        Me.ListView1.View = View.Details
        Me.ListView1.SmallImageList = Me.ImageList1
        Me.ListView1.Columns.Add("檔案名稱", 500, HorizontalAlignment.Left)
        Me.ListView1.Columns.Add("修改日期", 160, HorizontalAlignment.Left)
        Dim shinfo As SHFILEINFO
        shinfo = New SHFILEINFO()
        Dim spd() As String = {"桌面", "文件", "下載"}
        For Each dn As String In spd
            Dim bn As New ToolStripButton(dn)
            Select Case (dn)
                Case "桌面"
                    SHGetFileInfo(My.Computer.FileSystem.SpecialDirectories.Desktop, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON)
                    bn.ToolTipText = My.Computer.FileSystem.SpecialDirectories.Desktop()
                Case "文件"
                    SHGetFileInfo(My.Computer.FileSystem.SpecialDirectories.MyDocuments, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON)
                    bn.ToolTipText = My.Computer.FileSystem.SpecialDirectories.MyDocuments
                Case "下載"
                    SHGetFileInfo(My.Computer.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", False).GetValue("{374DE290-123F-4565-9164-39C4925E467B}"), 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON)
                    bn.ToolTipText = My.Computer.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", False).GetValue("{374DE290-123F-4565-9164-39C4925E467B}")
            End Select
            bn.Image = System.Drawing.Icon.FromHandle(shinfo.hIcon).ToBitmap
            ToolStrip2.Items.Add(bn)
            AddHandler bn.Click, AddressOf ToolStripButton_Click
        Next
        Dim drives() As String = Directory.GetLogicalDrives()
        For Each drv As String In drives
            Dim bn As New ToolStripButton(drv)
            SHGetFileInfo(drv, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON)
            bn.Image = System.Drawing.Icon.FromHandle(shinfo.hIcon).ToBitmap
            ToolStrip2.Items.Add(bn)
            AddHandler bn.Click, AddressOf ToolStripButton_Click
        Next
 
        FileSystemWatcher1.Path = My.Computer.FileSystem.CurrentDirectory
        FileSystemWatcher1_Changed(sender, Nothing)
    End Sub
 
    Private Sub FileSystemWatcher1_Changed(sender As Object, e As FileSystemEventArgs) Handles FileSystemWatcher1.Changed
        ImageList1.Images.Clear()
        Me.ListView1.Items.Clear()
        Dim hImgSmall As IntPtr  'The handle to the system image list.
        Dim shinfo As SHFILEINFO
        Dim nIndex As Integer = 0
        shinfo = New SHFILEINFO()
        Dim dir As New DirectoryInfo(FileSystemWatcher1.Path)
        Dim dirs As DirectoryInfo() = dir.GetDirectories("*.*")
        Dim diNext As DirectoryInfo
        For Each diNext In dirs
            hImgSmall = SHGetFileInfo(diNext.FullName, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON)
            Dim myIcon As System.Drawing.Icon
            myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon)
            ImageList1.Images.Add("dir", myIcon) 'Add icon to imageList.
            Dim lvItem As New ListViewItem(diNext.Name, "dir")
            lvItem.SubItems.Add(diNext.LastWriteTime)
            Me.ListView1.Items.Add(lvItem)
        Next
        For Each f In dir.GetFiles("*.*")
            hImgSmall = SHGetFileInfo(f.FullName, 0, shinfo, Marshal.SizeOf(shinfo), SHGFI_ICON Or SHGFI_SMALLICON)
            Dim myIcon As System.Drawing.Icon
            myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon)
            ImageList1.Images.Add(f.Extension, myIcon) 'Add icon to imageList.
            Dim lvItem As New ListViewItem(f.Name, f.Extension)
            lvItem.SubItems.Add(f.LastWriteTime)
            Me.ListView1.Items.Add(lvItem)
        Next
    End Sub
    Private Sub ToolStripButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        FileSystemWatcher1.Path = DirectCast(sender, ToolStripButton).ToolTipText
        FileSystemWatcher1_Changed(sender, Nothing)
    End Sub
End Class
Vb
魔術王子 目前離線  
送花文章: 1548, 收花文章: 1585 篇, 收花: 3940 次
回覆時引用此帖
 



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

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


所有時間均為台北時間。現在的時間是 12:06 PM


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


SEO by vBSEO 3.6.1