Извлечь значок из исполняемого файла, который находится в памяти - PullRequest
3 голосов
/ 18 января 2010

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

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

Ответы [ 2 ]

0 голосов
/ 18 января 2010

Это никогда не является реальной проблемой. Windows жестко требует, чтобы исполняемый файл представлял собой файл на диске. Вы не можете начать процесс иначе. Поскольку вы все равно должны записать файл на диск, у вас никогда не возникнет проблем с извлечением из него ресурсов с помощью API, для которого требуется путь к файлу.

0 голосов
/ 18 января 2010

, если мы говорим о получении иконки из уже созданной DLL, используйте Reflector

http://www.red-gate.com/products/reflector/

, чтобы открыть DLL-библиотеку и просто нажмите на иконку правой кнопкой мыши и нажмите Сохранить как также это можно сделать с помощью кода, используя отражение

Assembly myAssembly = Assembly.Load("SampleAssembly, Version=1.0.2004.0, Culture=neutral, PublicKeyToken=8744b20f8da049e3");
Stream myStream = myAssembly.GetManifestResourceStream( "MyNamespace.SubFolder.MyImage.bmp" );
Bitmap bmp = new Bitmap( myStream );

С наилучшими пожеланиями, Йордан

...