C#提取程序的图标

需要添加对System.Management.dll的引用  ,并且不要忘记导入下面的名称空间。

using System.Management;

ListView和  ImageList控件从可视工具箱拖动到Winform。

ListView控件LargeImageList属性设置ImageList

添加代码以处理表单加载事件,如下所示

private void button1_Click(object sender, EventArgs e)
{

    using (ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("select ProcessId, Name, ExecutablePath from Win32_Process"))
    {
        using (var results = managementObjectSearcher.Get())
        {
            var processes = results.Cast<ManagementObject>().Select(p => new
            {
                ProcessId = (UInt32)p["ProcessId"],
                Name = (string)p["Name"],
                ExecutablePath = (string)p["ExecutablePath"]
            });
            listView1.BeginUpdate();
            foreach (var pro in processes)
            {
                if (System.IO.File.Exists(pro.ExecutablePath))
                {
                    var icon = Icon.ExtractAssociatedIcon(pro.ExecutablePath);
                    var key = pro.ProcessId.ToString();
                    this.imageList1.Images.Add(key, icon.ToBitmap());
                    this.listView1.Items.Add(pro.Name, key);
                }
            }
            listView1.EndUpdate();
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/win32pro/p/12768715.html
今日推荐