elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Paso de parametros a programa en ejecucion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Paso de parametros a programa en ejecucion  (Leído 8,901 veces)
Lopardo

Desconectado Desconectado

Mensajes: 119


Solo es el principio...


Ver Perfil WWW
Paso de parametros a programa en ejecucion
« en: 28 Diciembre 2007, 14:16 pm »

Hola me gustaria pasarle pararmetros a un programa en ejecucion desde Java.

Algo asi, llamo a una aplicación y luego que esta se este ejecutando ir pasandole parametros los cuales producirian salidas varias en el programa, les pongo un ejemplo:

ejecuto al ms-dos desde Java y le paso comandos como dir, cd, md , etc. hasta ahora lo único que he logrado es ejecutar el programa con algo así:

Código
  1. class Programa
  2. {
  3.   public ejecutarPrograma()
  4.  {
  5.      try
  6.     {
  7.       //Aqui llamo la aplicacion que deseo ejecutar en este cado Ms-Dos
  8.       Process proceso = new Runtime.getRuntime().exec("cmd /c dir");
  9.  
  10.       //Luego redirecciono el flujo de datos (creo que se dice asi jeje)
  11.       InputStream datos = proceso.detInputStream();
  12.       BufferedReader str = new BufferedReader(new InputStreamReader(datos));
  13.  
  14.  
  15.       //De aqui tomo lo que va mostrando el ms-dos
  16.      String linea = str.readLine();
  17.      while(linea!=null)
  18.     {
  19.        System.out.println(linea);
  20.        linea = str.readLinea();
  21.     }
  22.  
  23.     }catch(Exception exc){}
  24.  
  25.  }
  26. }

Bueno basicamente es así, disculpa si hay algun error, no tengo el compilador a mano para probarlo, pero esa es la idea.

Ahora lo que no he logrado es poder mandarle comandos al programa en ejecución, es decir, al cmd.exe, osea ¿Como puedo mandarle un dir luego que lo alla iniciado sin tener que iniciarlo nuevamente?.

Espero me entiendan, cualquier cosa no duden en preguntar..

Saludos.


« Última modificación: 28 Diciembre 2007, 17:18 pm por Casidiablo » En línea

...de la sabiduría.
egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Paso de parametros a programa en ejecucion
« Respuesta #1 en: 28 Diciembre 2007, 14:52 pm »

primero debes tener un tipo de consola donde puedas escribir
puedes usar
System.in
o inventar una (pero modo grafico eso sip)
e ir creando nuevos comandos por ejemplo
Scanner scan = new Scanner(System.in);
String read  = scan.next();
Process proceso = new Runtime.getRuntime().exec("cmd /c "+read);
//....
y no se algo asi podría ser
xauu
suerte


En línea

Ragnarok
Colaborador
***
Desconectado Desconectado

Mensajes: 4.590


Shrödingerificado


Ver Perfil
Re: Paso de parametros a programa en ejecucion
« Respuesta #2 en: 28 Diciembre 2007, 23:26 pm »

http://java.sun.com/javase/6/docs/api/java/lang/Process.html#getOutputStream()
http://java.sun.com/javase/6/docs/api/index.html?java/io/OutputStream.html
http://java.sun.com/javase/6/docs/api/java/io/OutputStreamWriter.html
http://java.sun.com/javase/6/docs/api/java/io/DataOutputStream.html

Y así puedes escribir datos (principalmente strings, que es lo que te interesa) en el stream de entrada del proceso que estás ejecutando.
En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
Lopardo

Desconectado Desconectado

Mensajes: 119


Solo es el principio...


Ver Perfil WWW
Re: Paso de parametros a programa en ejecucion
« Respuesta #3 en: 31 Diciembre 2007, 18:21 pm »

Bueno gracias por la información pero no me ha funcionado aun... Les pongo el código a ver cual es mi error.

Código:
import java.io.*;

class ejemplo
{
    public void analizar()
{
try
{

Process proceso = Runtime.getRuntime().exec("cmd.exe");
InputStream entrada = proceso.getInputStream();
BufferedReader str = new BufferedReader(new InputStreamReader(entrada));


/*
//Primera manera
OutputStream out2 = proceso.getOutputStream();
DataOutputStream str3 = new DataOutputStream(out2);
str3.writeUTF("dir");
*/

/*
//Segunda manera
OutputStream out2 = proceso.getOutputStream();
BufferedWriter str3 = new BufferedWriter(new OutputStreamWriter(out2));
str3.write("dir");
*/

/*
//Tercera manera
OutputStream out2 = proceso.getOutputStream();
Writer str3 = new BufferedWriter(new OutputStreamWriter(out2));
str3.write("dir");
*/


String mostrar = str.readLine();
while(mostrar!=null)
{
System.out.println (mostrar);
mostrar = str.readLine();
}

}catch(Exception exc)
{
System.out.println ("Ocurrio un error");
}
}

    public static void main(String[] args)
    {
        new ejemplo().analizar();
    }
}

Bueno he intentado de estas tres maneras pero no me ha funcionado ninguna. Alguien sabe porque.. Bueno recordando lo que quiero hacer, quiero poder mandarle comandos a ms-dos desde una aplicación hecha en Java, teniendo en cuenta que la consola del ms-dos la voy a llamar una vez y una vez que este en ejecución mandarle los comandos que deseo ejecutar.

Gracias

Saludos
En línea

...de la sabiduría.
Ragnarok
Colaborador
***
Desconectado Desconectado

Mensajes: 4.590


Shrödingerificado


Ver Perfil
Re: Paso de parametros a programa en ejecucion
« Respuesta #4 en: 31 Diciembre 2007, 18:33 pm »

¿y qué es lo que pasa?, ¿has probado a escribir en un fichero en lugar de un proceso a ver si se escribe lo que quieres?, ¿has probado a escribir en un intérprete de mandatos eso mismo a ver si hace lo que quieres?
En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
Lopardo

Desconectado Desconectado

Mensajes: 119


Solo es el principio...


Ver Perfil WWW
Re: Paso de parametros a programa en ejecucion
« Respuesta #5 en: 1 Enero 2008, 18:17 pm »

Que pasa...

Bueno cuando ejecuto el código muetra la salida del programa  pero cuando intento mandarle algun parámetro no hace nada, como si no lo recibiera, no se porque ocurre eso, es decir, si cuando ejecuto el proceso le mando el comando todo sale bien, pero cuando intento ejecutar otro comando en este mismo proceso en ejecución no sucede nada, no se lo que esta ocurriendo.

Escribir en un fichero...

Bueno no entiendo bien esta pregunta pero si te refieres a si puedo escribir en un archivo común y corriente alguna información, eso si puedo hacerlo pero lo haría de otra manera con un método de esta manera:

Código:
  
public void escribir()
    {
    try
    {
    BufferedWriter sc = new BufferedWriter(new FileWriter("fichero.exe"));
    sc.write("Escribiendo a fichero.");
    sc.close();
   
}
catch (Exception ex)
{
System.out.println ("Error método escribir");
}
    }

Probar en un interprete de mandatos...

Bueno si te refieres al ms-dos, alli funcionan todos los comandos que quiero ejecutar. ya que lo que quiero hacer es una aplicación que haga uso del ms-dos u otro programa que se ejecute bajo ms-dos para lograr mandarle los comandos desde mi aplicacion en Java.

Bueno espero haber respondido todas tus preguntas... Espero su ayuda en esto.

Gracias.

Saludos
En línea

...de la sabiduría.
Ragnarok
Colaborador
***
Desconectado Desconectado

Mensajes: 4.590


Shrödingerificado


Ver Perfil
Re: Paso de parametros a programa en ejecucion
« Respuesta #6 en: 1 Enero 2008, 19:45 pm »

Las preguntas son la ayuda.

Si en lugar de escribir esos strings en el proceso los escribes en un fichero de texto y lo que tenga el fichero de texto lo copias y pegas en un intérprete de mandatos ejecutando el programa al que quieres pasarle esas instrucciones verás que no funciona y porqué.
En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
Lopardo

Desconectado Desconectado

Mensajes: 119


Solo es el principio...


Ver Perfil WWW
Re: Paso de parametros a programa en ejecucion
« Respuesta #7 en: 3 Enero 2008, 03:53 am »

Disculpa pero no entiendo bien lo que me planteas.

Bueno te explico lo que entiendo, me dices que en vez de mandar los parámetros directamente a la aplicación en ejecución, lo envie a un fichero de texto y luego copio lo que tiene este y abra un intérprete de mandatos osea el ms-dos y pegue allí lo que tiene el fichero... Bueno en caso que sea asi, si el fichero de texto tiene el comando "dir" y lo pego en el ms-dos, este me mostrará el contenido del directorio actual. Osea no entiendo bien lo que me dijiste, me gustaría que me explicaras nuevamente... disculpa la molestia..

Nota: los comandos se los quiero mandar de uno en uno al ms-dos.

Gracias.

Saludos.
En línea

...de la sabiduría.
Ragnarok
Colaborador
***
Desconectado Desconectado

Mensajes: 4.590


Shrödingerificado


Ver Perfil
Re: Paso de parametros a programa en ejecucion
« Respuesta #8 en: 3 Enero 2008, 16:09 pm »

¿no debería poner algo como "dir\n"?
En línea

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones
egyware


Desconectado Desconectado

Mensajes: 526



Ver Perfil WWW
Re: Paso de parametros a programa en ejecucion
« Respuesta #9 en: 3 Enero 2008, 16:45 pm »

porque usas la idea de ragnarok pero envez del archivo de texto txt le pones *.bat y pruebas en una consola de msdos y vez que esta mal en tu app y luego vez como deberias arregarlo con los in y out streams
xau
suerte
ps:
te prodria salir algo asi de malo segun el ultimo post
dirclsbeepcd directc:
en vez
dir
cls
beep
cd direct
c:
acuerdate de usar \n
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Esperar al final de la ejecucion de otro programa.
Programación Visual Basic
Elemental Code 2 3,420 Último mensaje 14 Diciembre 2010, 03:13 am
por Elemental Code
Paso de parametros por ID javascript, Php... Google Maps v3
Desarrollo Web
sandrich 0 2,416 Último mensaje 24 Abril 2012, 17:25 pm
por sandrich
Paso de parametros.
ASM
0xDani 5 4,061 Último mensaje 21 Agosto 2012, 16:51 pm
por Eternal Idol
Paso de parametros y rendimiento
Java
Sistematic 4 2,333 Último mensaje 29 Junio 2015, 06:08 am
por jhonatanAsm
Es seguro reemplazar el paso de parametros por valor, utilizando punteros a constantes ?
Programación C/C++
Locura_23 5 4,725 Último mensaje 30 Julio 2021, 23:25 pm
por Locura_23
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines