Код | [STAThread] private void Read_Resource() { string lpType = "GIF"; UInt32 lpName = 20; //****************************************************************************** IntPtr hModule = LoadLibraryEx(@"d:\qw\PEFile.exe", IntPtr.Zero, LOAD_LIBRARY_AS_DATAFILE); // грузим ресурс IntPtr hRes = FindResource(hModule, lpName, lpType); IntPtr hLoadedRes = LoadResource(hModule, hRes); IntPtr ptrRes = LockResource(hLoadedRes); int size = SizeofResource(hModule, hRes); // копируем ресурс в массив байтов byte[] buf = new byte[size]; Marshal.Copy(ptrRes, buf, 0, size);
// сохраняем в файл Stream stream = File.Create("c:\\" +lpName + ".gif"); stream.Write(buf, 0, size); stream.Close(); pictureBox1.Image =GetImage(buf); }
public Image GetImage(byte[] bytes) { using (Stream stream = new MemoryStream(bytes)) { return new Bitmap(stream); } }
private void button1_Click(object sender, EventArgs e) { Read_Resource(); }
|
Суть такая, если gif с анимацией то вылетает форма, а в остальных случаях все работает.
Код | pictureBox1.Load("c:\\1.gif"); // тут таже фигня pictureBox1.Image = Image.FromFile("c:\\1.gif");// а тут работает
|
|