private static void ProcessarComando(ArgsItem item)
        {
            RegistryBaseMenuItem instance = (RegistryBaseMenuItem)Activator.CreateInstance(item.ClassType);

            instance.Execute(item.Parametro);
            return;

            // Arquivo, Prompt aqui
            if (item.TipoComando == TipoComandoEnum.ArquivoPromptAqui)
            {
                Process.Start("cmd.exe", "/k");
                return;
            }

            // Arquivo, runas, Prompt aqui
            else if (item.TipoComando == TipoComandoEnum.ArquivoRunasPromptAqui)
            {
                string parametros = string.Format("/s /k pushd \"{0}\"", Path.GetDirectoryName(item.Parametro));
                Process.Start("cmd.exe", parametros);
                return;
            }

            Trace.WriteLine("Tipo de comando: " + item.Parametro);

            string strToClipboard = item.Parametro;

            try
            {
                //if (tipoComando == TipoComandoEnum.ArquivoCopiarNomeArquivo || tipoComando == TipoComandoEnum.DiretorioCopiarNomePasta)
                //{
                //  var lst = GetItensSelecionadosExplorer(tipoComando);
                //  Trace.WriteLine("Você tem selecionado:");
                //  Trace.Write(string.Join("; ", lst));
                //  Trace.WriteLine(new string('-', 50));
                //  strToClipboard = string.Join(Environment.NewLine, lst);
                //}
            }
            catch (Exception ex)
            {
                Trace.WriteLine("Não consegui saber os arquivos selecionados: " + ex.Message);
            }

            try
            {
                Clipboard.SetText(strToClipboard, TextDataFormat.Text);
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.ToString());
            }
        }
Beispiel #2
0
        /// <summary>
        /// Criar uma instância da classe <see cref="ArgsItem"/>
        /// </summary>
        /// <param name="args">Argumentos de linha de comando</param>
        /// <returns>Instância da classe</returns>
        public static ArgsItem Parse(string[] args)
        {
            ArgsItem item = new ArgsItem();

            Func <string, string> lerParametroComDefinicao = modificador =>
            {
                string nomeComando = (from str in args
                                      where str.StartsWith(modificador, StringComparison.CurrentCultureIgnoreCase)
                                      let start = str.IndexOf("=")
                                                  select str.Substring(start + 1)).FirstOrDefault();
                return(nomeComando);
            };

            string comando = lerParametroComDefinicao("/c");

            if (!string.IsNullOrEmpty(comando))
            {
                item.CategoriaComando = CategoriaComandoEnum.CopiarNome;
            }
            else
            {
                comando = lerParametroComDefinicao("/h");
                if (!string.IsNullOrEmpty(comando))
                {
                    item.CategoriaComando = CategoriaComandoEnum.Handle;
                }
                else
                {
                    comando = lerParametroComDefinicao("/p");
                    if (!string.IsNullOrEmpty(comando))
                    {
                        item.CategoriaComando = CategoriaComandoEnum.Prompt;
                    }
                }
            }

            if (!string.IsNullOrWhiteSpace(comando))
            {
                item.ClassType = Type.GetType(comando);

                //item.TipoComando = (TipoComandoEnum)Enum.Parse(typeof(TipoComandoEnum), comando);
                item.Parametro = args[args.Length - 1];
            }
            return(item);
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            Mutex m = new Mutex(true, "WinShellShortcuts", out bool createdNew);

            if (!createdNew)
            {
                // myApp is already running...
                Trace.WriteLine("Aplicativo já sendo executado");
                return;
            }

            if (Application.ExecutablePath.StartsWith(@"\\tecnologiabh", StringComparison.CurrentCultureIgnoreCase))
            {
                MessageBox.Show(string.Format("Para abrir o {0}, é necessário executá-lo em sua estação de trabalho." + Environment.NewLine + Environment.NewLine +
                                              "Não é permitido acessá-lo a partir da pasta: {1}." + Environment.NewLine + Environment.NewLine +
                                              "Se você tentou atualizá-lo, favor copiar todos os arquivos para sua máquina.", Application.ProductName, @"\\tecnologiabh"),
                                "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            if (args == null || args.Length == 0)
            {
                AbrirFormConfiguracao();
            }

            else
            {
                ArgsItem argsItem = ArgsItem.Parse(args);
                try
                {
                    Trace.WriteLine(argsItem.Print());
                    ProcessarComando(argsItem);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro ao setar Clipboard: " + ex.ToString(),
                                    "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            GC.KeepAlive(m);
        }
Beispiel #4
0
        private static void ProcessHandle(ArgsItem argsItem)
        {
            try
            {
                List <HandleProcessItem> lstProcessos = HandleObj.Instance.GetHandles(argsItem.Parametro);
                if (lstProcessos.Count > 0)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);

                    using (var form = new ExibirProcessosUsoForm(argsItem.Parametro, lstProcessos))
                    {
                        form.ShowDialog();
                    }
                }
                else
                {
                    MessageBox.Show($"{argsItem.Parametro}\r\n\r\nNão está em uso.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception handleEx)
            {
                MessageBox.Show("Erro(s) ao verificar uso." + Environment.NewLine + handleEx.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            /*
             * string output, outputError;
             * try
             * {
             * int exitCode = CommandClass.ExecuteCommand(fileName, "-a -u -accepteula -nobanner \"" + parametro + "\"",
             *    out output, out outputError, workingDir);
             * if (exitCode == 0)
             * {
             *  const string NaoEstaSendoUsado = "No matching handles found";
             *  if (output.IndexOf(NaoEstaSendoUsado, StringComparison.CurrentCultureIgnoreCase) >= 0)
             *    MessageBox.Show($"{parametro}\r\n\r\nNão está em uso.", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
             *
             *  else
             *  {
             *    List<HandleProcessItem> lstProcessos = HandleProcessItem.ParseOutput(output);
             *
             *    Application.EnableVisualStyles();
             *    Application.SetCompatibleTextRenderingDefault(false);
             *
             *    using (var form = new ExibirProcessosUsoForm(parametro, lstProcessos))
             *    {
             *      form.ShowDialog();
             *    }
             *  }
             * }
             * else
             *  MessageBox.Show("Erro(s) ao verificar uso." + Environment.NewLine + outputError, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
             * }
             * catch (Exception ex)
             * {
             * MessageBox.Show("Erro desconhecido: " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
             * }
             */
            //var info = new ProcessStartInfo(@"cmd")
            //{
            //  RedirectStandardInput = true,
            //  RedirectStandardError = true,
            //  RedirectStandardOutput = true,
            //  UseShellExecute = false,
            //  CreateNoWindow = true,
            //  WorkingDirectory = workingDir,
            //};
            //Process p = Process.Start(info);
            //p.StandardInput.AutoFlush = true;
            //p.OutputDataReceived += OnOutputDataReceived;
            //p.BeginOutputReadLine();
            //strOutput = new StringBuilder();

            //p.StandardInput.WriteLine("handle.exe -a -u -accepteula -nobanner \"" + parametro + "\"");
            //p.StandardInput.WriteLine(@"exit");
            //bool exited = p.WaitForExit(1000 * 60 * 15);
            //if (exited)
            //{
            //  p.StandardInput.Close();
            //  p.CancelOutputRead();
            //}
            //else
            //  p.Kill();


            //ProcessStartInfo handleParams = new ProcessStartInfo()
            //{
            //  FileName = fileName,
            //  WorkingDirectory = workingDir,
            //  Arguments = "-a -u -accepteula -nobanner \"" + parametro + "\"",
            //  UseShellExecute = false,
            //  RedirectStandardOutput = true,
            //  CreateNoWindow = false
            //};

            //Process handleProcess = Process.Start(handleParams);
            //handleProcess.WaitForExit();
            //string output = handleProcess.StandardOutput.ReadToEnd();
            //string output = strOutput.ToString();
        }
Beispiel #5
0
        private static void ProcessarComando(ArgsItem item)
        {
            RegistryBaseMenuItem instance = (RegistryBaseMenuItem)Activator.CreateInstance(item.ClassType);

            instance.Execute(item.Parametro);
        }