Используйте типы файлов изображений операционной системы в C # .NET - PullRequest
4 голосов
/ 02 марта 2011

Можно ли каким-либо образом использовать образы типов файлов из моей операционной системы и отображать их в моем приложении?

1 Ответ

2 голосов
/ 02 марта 2011

Если вам известно имя файла, значок которого вы хотите, вы можете использовать для этой цели функцию ExtractAssociatedIcon. например,

Icon ico = Icon.ExtractAssociatedIcon(@"C:\WINDOWS\system32\notepad.exe");

Хотя этот метод имеет подвох. Согласно документации,

Когда ExtractAssociatedIcon используется с растровыми изображениями, миниатюрное изображение может быть возвращено вместо значка, если в системе, в которой выполняется приложение, есть параметр реестра, позволяющий отображать растровые файлы в виде миниатюрных изображений.

Еще одна вещь, которую я обнаружил, заключалась в том, что этот метод извлекает только значки размером 32x32 пикселя.

См. System.Drawing.Icon.ExtractAssociatedIcon (MSDN) для получения дополнительной информации о том, как использовать этот метод.


Для более надежного извлечения значков, я бы посоветовал вам взглянуть на проект OSIcon в CodeProject.
Это позволяет вам получить связанный значок любого файла, используя его имя или расширение .
Вот пример кода для этого:

OSIcon.WinAPI.Shell32.SHFILEINFO shfi = new Shell32.SHFILEINFO();
Icon icon = OSIcon.IconReader.GetFileIcon(".png", IconReader.IconSize.Large, false, ref shfi);

Это ссылка на проект: http://www.codeproject.com/KB/system/OSIcon.aspx

...