Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Достать иконки из ресурсов другой сборки 
:(
    Опции темы
IEZ
Дата 31.8.2007, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 10.2.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 3



Приветсвую Всех!
Есть прога, в ресурсы которой импортированы иконки.

Как из другой проги получить индексы этих иконок?
Спасибо.


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
tol05
Дата 31.8.2007, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 11
Всего: 170



Та, другая прога - .Net сборка? Если да, то:
- в своей проге грузишь ту сборку 
Код

Assembly asm = Assembly.LoadFrom(...);

- потом из этой сборки
Код

Stream stream = asm.GetManifestResourceStream("Images.0d.ico"); //"Images.0d.ico" - имя ресурса-иконки
Icon icon = new Icon(stream);




--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
IEZ
Дата 31.8.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 10.2.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 3



Цитата(tol05 @  31.8.2007,  14:28 Найти цитируемый пост)
//"Images.0d.ico" - имя ресурса-иконки

А весь список иконок как получить?

Добавлено @ 14:44
Делаю так:
Код

System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFile(@"D:\Proga.exe");
Stream stream = asm.GetManifestResourceStream("Images.calendar.ico"); <------- возвращает null
Icon icon = new Icon(stream); <------- соответственно вылетает.


Это сообщение отредактировал(а) IEZ - 31.8.2007, 14:45


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
mihryak
Дата 31.8.2007, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 2
Всего: 36



Цитата(IEZ @  31.8.2007,  15:33 Найти цитируемый пост)
Добавлено @ 15:44
Делаю так:
Код

System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFile(@"D:\Proga.exe");
Stream stream = asm.GetManifestResourceStream("Images.calendar.ico"); <------- возвращает null
Icon icon = new Icon(stream); <------- соответственно вылетает. 

это из-за неправильного имени ресурса, обычно в начале его написан namespase (MyAssembly.Images.Icons.myIcon)
для получения всех иконок (только имей в виду, что в ресурсах могут быть не только иконки!)
Код

            foreach (string resourceName in assembly.GetManifestResourceNames())
            {
                Stream iconStream = assembly.GetManifestResourceStream(resourceName);
                Icon icon = new Icon(iconStream);
            }


PM MAIL ICQ   Вверх
IEZ
Дата 31.8.2007, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 10.2.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 3



Цитата(mihryak @  31.8.2007,  15:01 Найти цитируемый пост)
это из-за неправильного имени ресурса, обычно в начале его написан namespase (MyAssembly.Images.Icons.myIcon)

А как его точно узнать?


--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
tol05
Дата 31.8.2007, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 11
Всего: 170



mihryak написал уже
string[] resourceNames = assembly.GetManifestResourceNames();

...


Это сообщение отредактировал(а) tol05 - 31.8.2007, 15:36


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
IEZ
Дата 31.8.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 10.2.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 3



Цитата(tol05 @  31.8.2007,  15:35 Найти цитируемый пост)
string[] resourceNames = assembly.GetManifestResourceNames();

Я уже перебрал все пути.
Цитата(mihryak @  31.8.2007,  15:01 Найти цитируемый пост)
Icon icon = new Icon(iconStream);

Но здесь летит прога и все. С ошибкой: Аргумент 'picture' должен быть рисунком, который можно использовать как Icon.



--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
mihryak
Дата 31.8.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 2
Всего: 36



ну, значит, попался не иконочный стрим.
придумай к.-н. name-convention для иконок и проверяй resourceName на соответствие ему перед вытаскиванием иконки из потока.
и оберни в try-catch
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0453 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.