// 
// Copyright 2016 Agencia Estatal de Administración Tibutaria
//
// Licencia con arreglo a la EUPL, Versión 1.1 o -en cuanto
// sean aprobadas por la Comisión Europea- versiones
// posteriores de la EUPL (la «Licencia»);
// Solo podrá usarse esta obra si se respeta la Licencia.
// Puede obtenerse una copia de la Licencia en:
//  
// https://joinup.ec.europa.eu/software/page/eupl
//  
// Salvo cuando lo exija la legislación aplicable o se acuerde
// por escrito, el programa distribuido con arreglo a la
// Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES
// DE NINGÚN TIPO, ni expresasni implícitas.
//
// Véase la Licencia en el idioma concreto que rige los permisos y 
// limitaciones que establece la Licencia.
// 

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;

namespace ateneo.utiles
{
    class ProgramaExterno
    {
        public static void ejecuta(string programa, string parametros) {
            try {
                Process proceso = Process.Start(programa, parametros);
                proceso.WaitForExit();
            } catch (Exception ex) {
                LogExcepcion.guardar("Error en ProcesoExterno.ejecuta:", ex);
            }
        }

        public static void run(string programa, params string[] pars) {
            string parametros = "";
            foreach (string s in pars) {
                parametros += " \""+ s + "\"";
            }
            string nombrePrograma = programa.ToLower();
            if (nombrePrograma.EndsWith(".vbs") || nombrePrograma.EndsWith("js")) {
                ejecuta("CSCRIPT.EXE", "//nologo " + programa + parametros);
            } else if (nombrePrograma.EndsWith(".exe")) {
                ejecuta(programa, parametros);
            }
        }

        public static void ejecucionSilenciosa(string programa, string args) {
            Process proceso = new Process();
            proceso.StartInfo.UseShellExecute = false;
            proceso.StartInfo.CreateNoWindow = true;
            proceso.StartInfo.FileName = programa;
            proceso.StartInfo.Arguments = args;
            proceso.Start();
        }
    }
}
