Получение значков дисков и каталогов: Icon.ExtractAssociatedIcon (filePath) не работает? - PullRequest
5 голосов
/ 02 апреля 2011

Если Icon.ExtractAssociatedIcon(filePath) - это единственный способ получить значки в .NET &&, если он не работает для дисков и каталогов (не так ли?), То как вы можете получить значки для них??

Другими словами, я бы хотел

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

^ это, очевидно, не работает (работает только для файлов)

Я не уверен System.IO.Directory.Exists(file) - это верный способ определения наличия дисков ...

1 Ответ

11 голосов
/ 02 апреля 2011

Чтобы сделать это из приложения .NET, вам потребуется P / Invoke SHGetFileInfo функция из Windows API (она определена в shell32.dll).

Вот пример кода, который показывает, как это сделать: Получение связанных значков с помощью C #

...