using System; using Artemis.Core.Services; namespace Artemis.Core.Modules; /// /// Evaluates to true or false by checking if the specified process is running /// public class ProcessActivationRequirement : IModuleActivationRequirement { /// /// Creates a new instance of the class /// /// The name of the process that must run /// The location of where the process must be running from (optional) public ProcessActivationRequirement(string? processName, string? location = null) { if (string.IsNullOrWhiteSpace(processName) && string.IsNullOrWhiteSpace(location)) throw new ArgumentNullException($"Atleast one {nameof(processName)} and {nameof(location)} must not be null"); ProcessName = processName; Location = location; } /// /// The name of the process that must run /// public string? ProcessName { get; set; } /// /// The location of where the process must be running from /// public string? Location { get; set; } /// public bool Evaluate() { return ProcessMonitor.IsProcessRunning(ProcessName, Location); } /// public string GetUserFriendlyDescription() { string description = $"Requirement met when \"{ProcessName}.exe\" is running"; if (Location != null) description += $" from \"{Location}\""; return description; } }