代码之家  ›  专栏  ›  技术社区  ›  Dmitry Brant

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

  •  3
  • Dmitry Brant  · 技术社区  · 15 年前

    有人知道从RAM中的可执行文件中提取图标资源的API函数吗(例如,在memoryStream中)?

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

    2 回复  |  直到 15 年前
        1
  •  0
  •   Hans Passant    15 年前

    这从来不是真正的问题。Windows要求可执行文件是磁盘上的文件。否则无法启动进程。由于无论如何都必须将文件写入磁盘,因此使用需要文件路径的API从中提取资源时永远不会遇到问题。

        2
  •  0
  •   IordanTanev    15 年前

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

    最好的问候, 约旦