Встраивание ресурсов из win32 dll в .net - PullRequest
0 голосов
/ 01 апреля 2010

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

Ответы [ 2 ]

2 голосов
/ 01 апреля 2010

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

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

0 голосов
/ 01 апреля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...