/* 
* 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.
*/ 

package administrador.utiles;

public class ProgramaExterno {

    public ProgramaExterno() {
    }

    static void ejecuta(String programa) {
        try {
            String windir = Global.pideVariableEntorno("windir");
            String comando = windir + "\\system32\\rundll32 " + windir + "\\system32\\shell32.dll,ShellExec_RunDLL ";
            Process proceso = Runtime.getRuntime().exec(comando + programa);
            proceso.waitFor();
        } catch (InterruptedException interruptedExc) {
            System.err.println(interruptedExc.getMessage());
        } catch (Exception exc) {
            exc.printStackTrace();
        }
    }

    public static void run(String programa, String... params) {
        java.io.File fprog = new java.io.File(programa);
        if (!fprog.exists()) {
            return;
        }
        programa = fprog.getAbsolutePath();
        StringBuilder sb = new StringBuilder(500);
        sb.append('"').append(programa).append('"');
        for(String param : params) {
           sb.append(" \"").append(param).append('"');
        }
        ejecuta(sb.toString());
    }

    public static void run(String programa, String params) {

        java.io.File fprog = new java.io.File(programa);
        if (!fprog.exists()) {
            return;
        }
        programa = "\"" + fprog.getAbsolutePath() + "\"";
        ejecuta(programa + " \"" + params + "\"");
    }

}