2009-07-13 3 views
0

Я получаю следующее из библиотеки третьей стороной (один пример):Получение иконки из DLL

@% SystemRoot% \ SomePath \ SomeFile.Dll, -203

I знайте из контекста, что это значок. Мой вопрос: как я возьму эти «адреса» и фактически вытащу данные?

В соответствующей заметке я также хотел бы узнать лучший способ вывести отображаемый значок (из оболочки) из ванильного EXE.

Я работаю на C#, но я также могу работать с примерами C или C++.

+0

Чтобы быть понятным, вы хотите сделать это программно, не так ли? Для «интерактивного» использования вы можете просто открыть исполняемый файл или dll в Visual Studio и извлечь ресурсы. –

+0

Да, пути и индексы меняются; и ссылочные файлы (как правило) не являются частью моего приложения. –

ответ

2

С EXE вы должны вызвать функцию API SHGetFileInfo и указать, что вы хотите значок. Эта функция проверяет все способы, которыми может быть предоставлен значок (в файле, через расширения оболочки и т. Д. И т. Д.).

Для получения того, что вы получаете из библиотеки сторонних разработчиков, вы можете вызвать функцию API ExtractIconEx, передав имя файла (первая часть) и индекс (вторая часть).

0

Если вы используете reflector, вы можете точно увидеть, где хранятся вещи. (Если это совместимая dll). Это помогло мне в прошлом получить ресурсы.

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