NEWS

[C#] Hướng dẫn khởi động lại Retart process trên winform

[C#] Hướng dẫn khởi động lại Retart process trên winform
Đăng bởi: Thảo Meo - Lượt xem: 2142 08:52:18, 06/09/2022C#   In bài viết

Xin chào các bạn, bài viết hôm nay mình sẻ hướng dẫn các bạn cách khởi động lại Retart một hay nhiều Process trên Windows sử dụng C#, Winform.

[C#] How to retart a process in winform

retart_process_in_csharp

Để khởi động lại một Process, các bạn thực hiện các bước sau:

Ví dụ: mình muốn khởi động lại process Windows Explorer.

  1. B1: Chúng ta sẽ tìm đường dẫn file exe của WindowExplorer
  2. B2: Task. Kill Process
  3. B3: Start lại Process qua đường dẫn chúng ta vừa ghi nhận lại.

Full source code C#:

private void RetartListProcess(List<Process> listProcess)
{
    foreach (var process in listProcess)
    {
        var idprocess = process.Id;
        var fullname = GetMainModuleFilepath(idprocess);
        process.Kill();
        process.WaitForExit();
        Process.Start(fullname);
        Thread.Sleep(100);
    }
}

private string GetMainModuleFilepath(int processId)
{
    string wmiQueryString = "SELECT ProcessId, ExecutablePath FROM Win32_Process WHERE ProcessId = " + processId;
    using (var searcher = new ManagementObjectSearcher(wmiQueryString))
    {
        using (var results = searcher.Get())
        {
            ManagementObject mo = results.Cast<ManagementObject>().FirstOrDefault();
            if (mo != null)
            {
                return (string)mo["ExecutablePath"];
            }
        }
    }
    return null;
}

Ví dụ: mình sẽ Retart khởi động lại chương trình ứng dụng Excel và Windows Explorer chúng ta sẽ chạy như sau

var _processlist = "excel,explorer";
var lines = _processlist.Split(',');
var listProcess = Process.GetProcesses().Where(x => lines.Contains(x.ProcessName.ToLower())).ToList();
if (listProcess.Count == 0) {
    MessageBox.Show("Không tìm thấy...", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return;
}
RetartListProcess(listProcess);
var listProcess = Process.GetProcesses().Where(x => lines.Contains(x.ProcessName.ToLower())).ToList();
if (listProcess.Count == 0) {
    MessageBox.Show("Không tìm thấy", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return;
}
RetartListProcess(listProcess);

Thanks for watching!

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[C#] Hướng dẫn khởi động lại Retart process trên winform
Đăng bởi: Thảo Meo - Lượt xem: 2142 08:52:18, 06/09/2022C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.