Files
QoSManager/Views/ProcessSelectionWindow.xaml.cs
T
2026-04-22 16:45:35 +05:00

73 lines
2.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using QoSManager.Models;
namespace QoSManager.Views
{
public partial class ProcessSelectionWindow : Window
{
public List<ProcessInfo> Processes { get; set; }
public string SelectedProcess { get; set; }
public ProcessSelectionWindow()
{
InitializeComponent();
LoadProcesses();
}
private void LoadProcesses()
{
Processes = new List<ProcessInfo>();
foreach (var process in Process.GetProcesses())
{
try
{
var processInfo = new ProcessInfo
{
Id = process.Id,
Name = process.ProcessName,
Path = process.MainModule?.FileName ?? "Unknown"
};
Processes.Add(processInfo);
}
catch
{
// Skip processes we can't access
}
}
// Remove duplicates by path (keep only unique processes)
Processes = Processes
.GroupBy(p => p.Path)
.Select(g => g.First())
.ToList();
// Sort processes alphabetically by name
Processes = Processes.OrderBy(p => p.Name, StringComparer.OrdinalIgnoreCase).ToList();
ProcessesDataGrid.ItemsSource = Processes;
}
private void SelectButton_Click(object sender, RoutedEventArgs e)
{
if (ProcessesDataGrid.SelectedItem is ProcessInfo selectedProcess)
{
SelectedProcess = selectedProcess.Path;
DialogResult = true;
Close();
}
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;
Close();
}
}
}