谢谢回复,谢谢!!!!那里有介绍的文章推荐下.谢谢!!!
摘录:《程序员秘书》--源代码--图像处理--读取EXE、DLL等文件的图标集
轻轻松松开发软件,详见:htt://www.psec.net.cn
程序员秘书》功能展示Flash动画:
http://www.psec.net.cn/psec/程序员秘书.zip
1、在 Microsoft Visual Studio .NET 的“文件”菜单上,单击“新建”,然后单击“项目”。
2、在“新建项目”对话框中,选择“Visual C#项目”,再选择“Windows 应用程序”模板。
3、键入 FileIcoApp 作为该程序的名称,然后单击确定。
4、在Form1.cs的视图设计器中,添加如下控件:
控件类型 控件名称 控件属性 属性值
Button button1 Text 在文件中获取大、小图标
ImageList imageList1 ImageSize 32,32
ListView listView1 LargeImageList imageList1
5、在Form1.cs的代码设计器中,引用添加如下代码
using System.Runtime.InteropServices;
6、在Form1.cs的视图设计器中,选中button1,在属性框中选中事件,双击Click,在Form1.cs的代码设计器中,添加修改如下代码
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ExeOpenFileDialog = new OpenFileDialog();
ExeOpenFileDialog.Filter = "All 文件|*.*";
ExeOpenFileDialog.FileName = @"c:\windows\system32\shell32.dll";//shell32.dll含有windows丰富的图标集
ExeOpenFileDialog.Multiselect = false;
ExeOpenFileDialog.RestoreDirectory = true;
if (ExeOpenFileDialog.ShowDialog() == DialogResult.OK)
{
GetFileIco(ExeOpenFileDialog.FileName);//在文件(如.exe、.dll、有图标的文件)中获取大、小图标
}
}
7、在Form1.cs的代码设计器中,添加如下代码
[DllImport("shell32.dll", CharSet = CharSet.Auto)]
private static extern int ExtractIconEx(string path, int i, IntPtr[] big, IntPtr[] small, uint op);
private void GetFileIco(string FilePath)//在文件中获取大、小图标
{
try
{
listView1.Items.Clear();
imageList1.Images.Clear();
int IconsNum = ExtractIconEx(FilePath, -1, null, null, 0); //获取文件中有多少图标
if (IconsNum <= 0)
{
MessageBox.Show(FilePath + "文件中没有图标!", "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
IntPtr[] LargeIcons = new IntPtr[IconsNum];
IntPtr[] SmallIcons = new IntPtr[IconsNum];
ExtractIconEx(FilePath, 0, LargeIcons, SmallIcons, (uint)IconsNum);
for (int i = 0; i < IconsNum; i++)//显示图标(以大图标为例)
{
listView1.Items.Add(i.ToString());
imageList1.Images.Add(System.Drawing.Icon.FromHandle(LargeIcons[i]));
listView1.Items[i].ImageIndex = i;
}
}
catch { }
}
8、编译