示例#1
0
        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();
            }
        }
示例#2
0
        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);
        }
示例#3
0
 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;
     }
 }
示例#4
0
        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();
        }
示例#5
0
        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();
            }
        }
示例#6
0
        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();
            }
        }