Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get File Icon used by Shell

In .Net (C# or VB: don't care), given a file path string, FileInfo struct, or FileSystemInfo struct for a real existing file, how can I determine the icon(s) used by the shell (explorer) for that file?

I'm not currently planning to use this for anything, but I became curious about how to do it when looking at this question and I thought it would be useful to have archived here on SO.

like image 391
Joel Coehoorn Avatar asked Jan 20 '09 17:01

Joel Coehoorn


1 Answers

Imports System.Drawing Module Module1      Sub Main()             Dim filePath As String =  "C:\myfile.exe"           Dim TheIcon As Icon = IconFromFilePath(filePath)            If TheIcon IsNot Nothing Then                 ''#Save it to disk, or do whatever you want with it.             Using stream As New System.IO.FileStream("c:\myfile.ico", IO.FileMode.CreateNew)                 TheIcon.Save(stream)                       End Using         End If     End Sub      Public Function IconFromFilePath(filePath As String) As Icon         Dim result As Icon = Nothing         Try             result = Icon.ExtractAssociatedIcon(filePath)         Catch ''# swallow and return nothing. You could supply a default Icon here as well         End Try         Return result     End Function End Module 
like image 163
Stefan Avatar answered Sep 21 '22 06:09

Stefan