02/10/2018, 11:36

[C#] Hướng dẫn lấy icon từ process

Xin chào các bạn, bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn cách lấy icon từ file hoặc process c# . Nếu bạn nào muốn viết ứng dụng C# liệt kê tất cả tập tin lên listview . Trong listview được load từ một đường dẫn của folder, ...

Xin chào các bạn, bài viết hôm nay mình sẽ tiếp tục hướng dẫn các bạn cách lấy icon từ file hoặc process c#.

Nếu bạn nào muốn viết ứng dụng C# liệt kê tất cả tập tin lên listview

Trong listview được load từ một đường dẫn của folder, trong folder có nhiều tập tin như: txt, excel, word, image, pdf, dll...

Vậy làm sao để lấy được các icon của hệ thống, nếu file excel thì hiển thị icon của phần mềm Excel...

Rất đơn giản chúng ta chỉ cần sử dụng hàm bên dưới:

  var icon = Icon.ExtractAssociatedIcon(p.ExecutablePath);

với ExcuteablePath là đường dẫn chính xác đến tập tin.

Và dưới đây là giao diện demo ứng dụng lấy icon trong process đang chạy của Windows:

lay icon tu progress c#

Source code C#:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Management;

namespace getIconFromProcess
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            var query = "SELECT ProcessId, Name, ExecutablePath FROM Win32_Process";
            using (var searcher = new ManagementObjectSearcher(query))
            using (var results = searcher.Get())
            {
                var processes = results.Cast().Select(x => new
                {
                    ProcessId = (UInt32)x["ProcessId"],
                    Name = (string)x["Name"],
                    ExecutablePath = (string)x["ExecutablePath"]
                });
                foreach (var p in processes)
                {
                    if (System.IO.File.Exists(p.ExecutablePath))
                    {
                        var icon = Icon.ExtractAssociatedIcon(p.ExecutablePath);
                        var key = p.ProcessId.ToString();
                        this.imageList1.Images.Add(key, icon.ToBitmap());
                        this.listView1.Items.Add(p.Name, key);
                    }
                }
            }
        }
    }
}

CHÚC CÁC BẠN THÀNH CÔNG!

Tags: iconprocessimage
0