public static void ExtractIcon()
{
if (Form1.Instance.checkmainicon.Checked & File.Exists("icon.exe"))
{
if (Form1.Instance.checkIconM2.Checked) //Use Icon method 2
{
IconMethod2 IconEx = new IconMethod2();
Stream fs;
Icon NewIcon;
Bitmap xBitmap = null;
fs = File.OpenWrite("icon.ico");
if (Form1.Instance.checkmainicon.Checked)
{
xBitmap = IconEx.ExtractIcon(Form1.Instance.TextHostFile.Text);
}
else if (Form1.Instance.textIconPath.Text.EndsWith(".exe".ToLower()))
{
xBitmap = IconEx.ExtractIcon(Form1.Instance.textIconPath.Text);
}
IntPtr Hicon = xBitmap.GetHicon();
NewIcon = System.Drawing.Icon.FromHandle(Hicon);
NewIcon.Save(fs);
fs.Close();
xBitmap.Dispose();
NewIcon.Dispose();
}
else if (Form1.Instance.checkIconM1.Checked) //Use Icon method 1
{
string origfile = null;
if (Form1.Instance.checkmainicon.Checked)
{
origfile = (Form1.Instance.TextHostFile.Text);
}
else if (Form1.Instance.textIconPath.Text.EndsWith(".exe".ToLower()))
{
origfile = (Form1.Instance.textIconPath.Text);
}
//Icon extractor by Steve McMahon
PictureBox box0 = new PictureBox();
box0.Image = Icon.ExtractAssociatedIcon(origfile).ToBitmap();
Bitmap MyBMP0 = new Bitmap(box0.Image);
PictureBox box = new PictureBox();
box.Image = MyBMP0;
Bitmap MyBMP = new Bitmap(32, 32, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
Icon MyIcon = Icon.FromHandle(MyBMP.GetHicon());
Stream st = new System.IO.FileStream("icon.ico", FileMode.Create);
BinaryWriter wr = new System.IO.BinaryWriter(st);
MyIcon.Save(st);
wr.Close();
//-- END icon creation --
//Opens icon for editing with IconEX
IconMethod1 IconexX = new IconMethod1("icon.ico");
//Removes original icon image that we created above
IconexX.Items.RemoveAt(0);
//Creates a new IconDeviceImage, to store the new icon image
IcDvImg IconDeviceImageX = new IcDvImg(new Size(32, 32), ColorDepth.Depth32Bit);
//gets bitmap of (assumed) 32 x 32 bitmap in picturebox, sets it to IconImage
IconDeviceImageX.IconImage = new Bitmap(box.Image);
//adds icondevicimage to the icon file
IconexX.Items.Add(IconDeviceImageX);
//saves icon
IconexX.Save("icon.ico");
box0.Dispose();
MyBMP0.Dispose();
MyIcon.Dispose();
MyBMP.Dispose();
st.Dispose();
box.Dispose();
IconexX.Dispose();
IconDeviceImageX.Dispose();
}
}
}