using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using Base; namespace AppSys.Handlers { internal 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; } } }