从内存中提取可执行文件的图标

3

有没有API函数可以从内存中的可执行文件(例如MemoryStream)中提取图标资源?

到目前为止,我看到的所有提取图标的函数都依赖于可执行文件存在于磁盘上。我想在不必将exe写入临时文件并从中加载资源的情况下提取图标。

2个回答

0

如果我们要从已构建的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 );

最好的祝福, Iordan


1
我认为他明确表示他想从内存中读取图标。 - gbianchi

0
这从未是一个真正的问题。Windows有一个硬性要求,即可执行文件必须是磁盘上的文件。否则你无法启动进程。由于你必须将文件写入磁盘,因此使用需要文件路径的API从中提取资源时永远不会出现问题。

谢谢,我必须咬紧牙关。 - Dmitry Brant
1
“这从来不是一个真正的问题”--遗憾的是,你不能定义什么问题是“真实的”。例如,我想从网络捕获中提取图标而不触及磁盘。 - EricLaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接