gpt4 book ai didi

vb.net - 文件图标和 ListView

转载 作者:行者123 更新时间:2023-12-01 00:04:33 25 4
gpt4 key购买 nike

如何检索与文件类型关联的文件图标并将它们添加到 vb.net 中的 Listview 项目

我读了关于 SHGetFileInfo 的信息,但我对此一无所知

请给我解决方案或请解释我系统如何与 .net 控件一起使用的详细信息

最佳答案

查了一下 SHGetFileInfo我可以理解为什么您对此感到困惑,但我认为对于我认为您正在尝试执行的操作(即枚举文件夹的内容并将项目添加到 Listview 中)来说,这可能有点矫枉过正。

如果我们有一个包含 ListView 和 ImageList 的表单,通过将 ListView 的 LargeImageList 属性设置为 ImageList 将两者相关联,那么我们将使用来自关联 EXE 文件的图标将文件夹的内容放入 ListView对于每个文件。

Imports System.IO
Imports System.Drawing

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim dirInfo As DirectoryInfo
Dim fileInfo As FileInfo
Dim exePath As String
Dim exeIcon As Icon

dirInfo = New DirectoryInfo(path_to_some_folder

'We use this For...Each to iterate over the collection of files in the folder
For Each fileInfo In dirInfo.GetFiles
'We can only find associated exes by extension, so don't show any files that have no extension
If fileInfo.Extension = String.Empty Then
Else
'Use the function to get the path to the executable for the file
exePath = GetAssociatedProgram(fileInfo.Extension)

'Use ExtractAssociatedIcon to get an icon from the path
exeIcon = Drawing.Icon.ExtractAssociatedIcon(exePath)

'Add the icon if we haven't got it already, with the executable path as the key
If ImageList1.Images.ContainsKey(exePath) Then
Else
ImageList1.Images.Add(exePath, exeIcon)
End If

'Add the file to the ListView, with the executable path as the key to the ImageList's image
ListView1.Items.Add(fileInfo.Name, exePath)
End If
Next

End Sub

GetAssociatedProgram 来自 developer.com
Public Function GetAssociatedProgram(ByVal FileExtension As _
String) As String


' Returns the application associated with the specified
' FileExtension
' ie, path\denenv.exe for "VB" files
Dim objExtReg As Microsoft.Win32.RegistryKey = _
Microsoft.Win32.Registry.ClassesRoot
Dim objAppReg As Microsoft.Win32.RegistryKey = _
Microsoft.Win32.Registry.ClassesRoot
Dim strExtValue As String
Try
' Add trailing period if doesn't exist
If FileExtension.Substring(0, 1) <> "." Then _
FileExtension = "." & FileExtension
' Open registry areas containing launching app details
objExtReg = objExtReg.OpenSubKey(FileExtension.Trim)
strExtValue = objExtReg.GetValue("").ToString
objAppReg = objAppReg.OpenSubKey(strExtValue & _
"\shell\open\command")
' Parse out, tidy up and return result
Dim SplitArray() As String
SplitArray = Split(objAppReg.GetValue(Nothing).ToString, """")
If SplitArray(0).Trim.Length > 0 Then
Return SplitArray(0).Replace("%1", "")
Else
Return SplitArray(1).Replace("%1", "")
End If
Catch
Return ""
End Try
End Function

最后,当您在此文件夹上运行此代码时:
alt text http://www.philippursglove.com/stackoverflow/listview1.png
你应该得到:
alt text http://www.philippursglove.com/stackoverflow/listview2.png

关于vb.net - 文件图标和 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2086243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com