Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting icons of Drives and Directories: Icon.ExtractAssociatedIcon(filePath) doesn't work?

If Icon.ExtractAssociatedIcon(filePath) is the only way to get icons in .NET && if it doesn't work for Drives and Directories (does it?) then how do you go about getting the icons for them?

In other words, I'd like to

foreach (string driveName in Directory.GetLogicalDrives())
//if (System.IO.Directory.Exists(driveName))
{
    using (System.Drawing.Icon systemIcon = System.Drawing.Icon.ExtractAssociatedIcon(driveName))
    { ... }
}

^ this obviously doesn't work (works only for files)

I'm not sure System.IO.Directory.Exists(file) is the right way for detecting if drives exist as well...

like image 735
Spectraljump Avatar asked Apr 02 '11 12:04

Spectraljump


1 Answers

To do this from a .NET application, you will have to P/Invoke the SHGetFileInfo function from the Windows API (it's defined in shell32.dll).

Here is some sample code that shows how to do this: Getting Associated Icons Using C#

like image 129
HABJAN Avatar answered Oct 09 '22 03:10

HABJAN