2010-04-01 7 views
0

Я работаю с классом treeView. Я хочу создать дерево файлов с иконками. Я хочу извлечь некоторые значки из shell32.dll. Может ли значок или класс изображения работать с res-протоколом. как узнать полный путь к файлу по протоколу res?Внедрение ресурсов из win32 dll в .net

ответ

2

Microsoft строго и неоднократно предупреждал об этой практике. Ресурсы в shell32.dll являются частной информацией о реализации и могут быть изменены без предварительного уведомления. Предполагая, что вы хотите проигнорировать это: вы можете вывести иконки из него с помощью P/Invoking LoadLibrary(), чтобы получить дескриптор модуля и LoadImage(), чтобы получить значок. К сожалению, конструктор значков, который берет дескриптор, является закрытым, вам придется использовать Reflection для его вызова. Посетите pinvoke.net для объявлений.

Хотя все это работает, это не отличный код, который вам понравится. Fwiw, поднимая иконки из shell32.dll и помещая его в управляемый ресурс, очень прост. В Visual Studio используйте File + Open + File и откройте файл shell32.dll. Вы получите список всех ресурсов, перейдите в узел Icons. Дважды щелкните его, чтобы увидеть, что он содержит, щелкните правой кнопкой мыши + Экспорт, чтобы сохранить его в файле. Не знаю, насколько это право, сами значки не несут уведомление об авторских правах, но shell32.dll, безусловно, делает. Вероятно, это не так.

0

Я думаю, вам нужно извлечь значки из shell32, если вы хотите их использовать.

С IcoFx (бесплатно) вы можете извлекать иконки из exe's и dll's.

+0

thx, но я хочу сделать это по коду. – Xaver

Смежные вопросы