diff --git a/Lib.ProcessManaging/Interfaces/IObservedProcess.cs b/Lib.ProcessManaging/Interfaces/IObservedProcess.cs index c6cce23..8baece9 100644 --- a/Lib.ProcessManaging/Interfaces/IObservedProcess.cs +++ b/Lib.ProcessManaging/Interfaces/IObservedProcess.cs @@ -2,16 +2,17 @@ // Created: 2021-04-16 // Copyright(c) 2021 SimonG. All Rights Reserved. -using System; using System.Diagnostics; namespace Lib.ProcessManaging.Interfaces { - public interface IObservedProcess : IDisposable + public interface IObservedProcess { string Name { get; } int Id { get; } + string FileName { get; } bool EqualsProcess(Process process); + bool IsSameExecutable(IObservedProcess observedProcess); } } \ No newline at end of file diff --git a/Lib.ProcessManaging/ObservedProcess.cs b/Lib.ProcessManaging/ObservedProcess.cs index 0cf57e7..b6c6c3b 100644 --- a/Lib.ProcessManaging/ObservedProcess.cs +++ b/Lib.ProcessManaging/ObservedProcess.cs @@ -9,15 +9,32 @@ namespace Lib.ProcessManaging { public class ObservedProcess : IObservedProcess { - private readonly Process _process; + public ObservedProcess(Process process) + { + Name = process.ProcessName; + Id = process.Id; + FileName = TryGetFileName(process); + } - public ObservedProcess(Process process) => _process = process; + public string Name { get; } + public int Id { get; } + public string FileName { get; } - public string Name => _process.ProcessName; - public int Id => _process.Id; + public bool EqualsProcess(Process process) => Id == process.Id; + public bool IsSameExecutable(IObservedProcess observedProcess) => FileName.Equals(observedProcess.FileName); - public bool EqualsProcess(Process process) => _process.Id == process.Id; + private string TryGetFileName(Process process) + { + try + { + return process.MainModule?.FileName ?? ""; + } + catch + { + // ignored + } - public void Dispose() => _process.Dispose(); + return ""; + } } } \ No newline at end of file