using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using Base; namespace AppSys.Handlers { class HandlerApps : IHandler { private static readonly string PathSystem = Environment.GetFolderPath(Environment.SpecialFolder.System); private static readonly Dictionary<string, ProcessStartInfo> Mappings = new Dictionary<string, ProcessStartInfo> { { "audio", new ProcessStartInfo { FileName = Path.Combine(PathSystem, "control.exe"), Arguments = "mmsys.cpl" } }, { "programs", new ProcessStartInfo { FileName = Path.Combine(PathSystem, "control.exe"), Arguments = "appwiz.cpl" } }, { "system", new ProcessStartInfo { FileName = Path.Combine(PathSystem, "control.exe"), Arguments = "sysdm.cpl" } }, { "environment", new ProcessStartInfo { FileName = Path.Combine(PathSystem, "rundll32.exe"), Arguments = "sysdm.cpl,EditEnvironmentVariables" } } }; private static readonly Dictionary<string, string> Substitutions = new Dictionary<string, string> { { "sounds", "audio" }, { "apps", "programs" }, { "appwiz", "programs" }, { "env", "environment" }, { "envvars", "environment" }, { "vars", "environment" }, { "variables", "environment" } }; public bool Matches(Command cmd) { return Mappings.ContainsKey(cmd.Text) || Substitutions.ContainsKey(cmd.Text); } public string Handle(Command cmd) { string key; if (!Substitutions.TryGetValue(cmd.Text, out key)) { key = cmd.Text; } using (Process.Start(Mappings[key])) {} return null; } } }