private void newToolStripMenuItem2_Click(object sender, EventArgs e) { WindowsAliasChooser wac = new WindowsAliasChooser(); if (wac.ShowDialog(this) == DialogResult.OK) { Config.WindowsAlias wa = new Config.WindowsAlias(); wa.enabled = false; wa.ID = cfg.NextID(); wa.name = wac.Alias; wa.command = wac.Command; wa.args_pattern = wac.Args; wa.working_dir = wac.WorkingDir; wa.hidden = wac.Hidden; wa.target_hidden = wac.TargetHidden; wa.open_console = wac.Console; wa.target_open_console = wac.TargetConsole; wa.admin = wac.Admin; cfg.windows_aliases.Add(wa); _saveConfig(); _updateLists(); _updateAliases(); } }
public static string MakeWindowsAlias(string output, Config.WindowsAlias wa) { string temp_dir = "temp"; try { Directory.CreateDirectory(temp_dir); string exe_path = Path.Combine(temp_dir, "alias.exe"); string manifest_path = Path.Combine(temp_dir, "manifest.xml"); if (wa.admin) { File.WriteAllText(manifest_path, Properties.Resources.AdminManifest); } else { File.WriteAllText(manifest_path, Properties.Resources.LimitedManifest); } CompilerParameters parameters = new CompilerParameters() { GenerateExecutable = true, TreatWarningsAsErrors = false, CompilerOptions = "/win32manifest:" + manifest_path + " /platform:anycpu", IncludeDebugInformation = false, GenerateInMemory = false, OutputAssembly = exe_path }; if (wa.open_console) { parameters.CompilerOptions += " /target:exe"; } else { parameters.CompilerOptions += " /target:winexe"; } parameters.ReferencedAssemblies.Add("System.dll"); string code = Properties.Resources.WindowsAlias; code = code.Replace("[COMMAND]", CodeOfStr(wa.command)); code = code.Replace("[HIDDEN]", CodeOfBool(wa.hidden)); code = code.Replace("[TARGET_HIDDEN]", CodeOfBool(wa.target_hidden)); code = code.Replace("[TARGET_OPEN_CONSOLE]", CodeOfBool(wa.target_open_console)); code = code.Replace("[ARGS_PATTERN]", CodeOfStr(wa.args_pattern)); code = code.Replace("[WORKING_DIR]", CodeOfStr(wa.working_dir)); CSharpCodeProvider provider = new CSharpCodeProvider(new Dictionary <string, string> { { "CompilerVersion", "v4.0" } }); CompilerResults compiler = provider.CompileAssemblyFromSource(parameters, code); if (compiler.Errors.Count > 0) { throw new Exception(compiler.Errors[0].ErrorText); } File.Move(exe_path, output); } catch (Exception e) { return(e.Message); } finally { try { Directory.Delete(temp_dir, true); } catch { } } return(null); }
public WindowsAliasChooser(Config.WindowsAlias wa) { InitializeComponent(); if (wa != null) { name.Text = wa.name; command.Text = wa.command == null ? "" : wa.command; targetHidden.Checked = wa.target_hidden; hidden.Checked = wa.hidden; console.Checked = wa.open_console; targetConsole.Checked = wa.target_open_console; admin.Checked = wa.admin; args.Text = wa.args_pattern == null ? "" : wa.args_pattern; workingDir.Text = wa.working_dir == null ? "" : wa.working_dir; } }
private void deleteToolStripMenuItem2_Click(object sender, EventArgs e) { if (windowsListView.FocusedItem == null) { return; } Config.WindowsAlias wa = cfg.GetWindowsAlias((int)windowsListView.FocusedItem.Tag); if (wa == null) { return; } cfg.DeleteWindowsAlias(wa.ID); // We must delete the alias involved, however it will not be updated string filename = Path.Combine(aliases_location, _normalizeAliasName(wa.name)); try { File.Delete(filename); } catch { } _saveConfig(); _updateLists(); _updateAliases(); }
private void editToolStripMenuItem2_Click(object sender, EventArgs e) { if (windowsListView.FocusedItem == null) { return; } Config.WindowsAlias wa = cfg.GetWindowsAlias((int)windowsListView.FocusedItem.Tag); if (wa == null) { return; } WindowsAliasChooser wac = new WindowsAliasChooser(wa); if (wac.ShowDialog(this) == DialogResult.OK) { // We must delete the alias involved, however it will not be updated string filename = Path.Combine(aliases_location, _normalizeAliasName(wa.name)); try { File.Delete(filename); } catch { } wa.name = wac.Alias; wa.command = wac.Command; wa.args_pattern = wac.Args; wa.working_dir = wac.WorkingDir; wa.hidden = wac.Hidden; wa.target_hidden = wac.TargetHidden; wa.open_console = wac.Console; wa.target_open_console = wac.TargetConsole; wa.admin = wac.Admin; // We must delete the alias involved, however it will not be updated filename = Path.Combine(aliases_location, _normalizeAliasName(wa.name)); try { File.Delete(filename); } catch { } _saveConfig(); _updateLists(); _updateAliases(); } }
private void windowsListView_ItemCheck(object sender, ItemCheckEventArgs e) { if (e.CurrentValue == CheckState.Indeterminate || e.NewValue == CheckState.Indeterminate) { return; } Config.WindowsAlias wa = cfg.GetWindowsAlias((int)windowsListView.Items[e.Index].Tag); if (wa != null && wa.enabled != (e.NewValue == CheckState.Checked)) { wa.enabled = (e.NewValue == CheckState.Checked); if (e.NewValue == CheckState.Unchecked) { // We must delete the alias involved, however it will not be updated string filename = Path.Combine(aliases_location, _normalizeAliasName(wa.name)); try { File.Delete(filename); } catch { } } _saveConfig(); _updateAliases(); } }