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()); } }
/// <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); }
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); }
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(); }
private static void ProcessarComando(ArgsItem item) { RegistryBaseMenuItem instance = (RegistryBaseMenuItem)Activator.CreateInstance(item.ClassType); instance.Execute(item.Parametro); }