标签:
记得原来是可以通过PE直接提取Exe里面的图片的,不知道为什么不能用了,下面是通过加载程序集反射出Resources 里面的图片或者图标;
提取结果直接存放到编译目录了,不知道向左向右,自己又回到Winform了
//从Exe里面提取图标和图片 Assembly assm = Assembly.LoadFrom("Swtpro4.exe"); HashSet<string> l_strHashType = new HashSet<string>(); foreach (string resName in assm.GetManifestResourceNames()) { Stream stream = assm.GetManifestResourceStream(resName); ResourceReader rr = new ResourceReader(stream); IDictionaryEnumerator enumerator = rr.GetEnumerator(); while (enumerator.MoveNext()) { DictionaryEntry de = (DictionaryEntry)enumerator.Current; l_strHashType.Add(de.Value.GetType().ToString()); switch (de.Value.GetType().ToString()) { case "System.Drawing.Icon": System.Drawing.Icon ic = (Icon)de.Value; //路径根据自己需要更改 using (System.IO.Stream sm = new FileStream(de.Key.ToString() + ".ico", FileMode.Create)) { ic.Save(sm); } break; case "System.Drawing.Bitmap": System.Drawing.Bitmap icbmp = (Bitmap)de.Value; icbmp.Save(de.Key.ToString() + ".bmp"); break; //TODO 这里我只写了2种 default: break; } //de.Key是资源名 //de.Value是资源内容 } } Console.WriteLine(l_strHashType.Count);
标签:
原文地址:http://www.cnblogs.com/maanshancss/p/4767675.html