Foro de elhacker.net

Programación => Java => Mensaje iniciado por: NikNitro! en 26 Septiembre 2014, 12:56 pm



Título: No consigo apagar el pc desde Java...
Publicado por: NikNitro! en 26 Septiembre 2014, 12:56 pm
Buenas gente. Estoy intentando crear una interfaz que me permita temporizar un apagado, ya que mi hermana no se aclara con eso de escribir shutdown en una pantallita negra con letras blancas... xD

Pues os muestro el código que lo haría todo...

Código
  1. public void apagar() {
  2. try {
  3. if(radAnular.isEnabled()) {
  4. String []cmd = {"shutdown", "-a"};
  5. Runtime.getRuntime().exec(cmd);
  6. cambiaTexto("Apagado anulado");
  7. } else {
  8. String tiempo = "";
  9. String modo   = "";
  10. if(radApagar.isEnabled()) {
  11. modo = "-s";
  12. if(radHora.isEnabled()) {
  13.  
  14. } else {
  15.  
  16. }
  17. cambiaTexto("Apagado programado");
  18. } else if(radHibernar.isEnabled()) {
  19. modo = "-h";
  20. if(radHora.isEnabled()) {
  21.  
  22. } else {
  23.  
  24. }
  25. cambiaTexto("Hibernación programada");
  26.  
  27. } else {
  28. modo = "-r";
  29. if(radHora.isEnabled()) {
  30.  
  31. } else {
  32.  
  33. }
  34. cambiaTexto("Reinicio programado");
  35.  
  36. }
  37.  
  38. String [] cmd = {"shutdown", modo, "-f", "-t", ""+calcularTiempo()};
  39. Runtime.getRuntime().exec(cmd);
  40. }
  41.  
  42. } catch (IOException e ) {
  43. System.out.println("ERROR: "+e.toString());
  44. cambiaTexto("Ha ocurrido un error");
  45. }
  46. }
  47.  

El primer fallo que no comprendo es que siempre entra en el "anular" (esto lo se porque en la GUI me pone "APAGADO ANULADO").

Los que empiezan por rad son JRadioButton que los tengo agrupados así...
Código
  1. grupAccion = new ButtonGroup();
  2. grupAccion.add(radApagar);
  3. grupAccion.add(radHibernar);
  4. grupAccion.add(radReiniciar);
  5. grupAccion.add(radAnular);
  6.  
  7. grupCom = new ButtonGroup();
  8. grupCom.add(radHora);
  9. grupCom.add(radTiempo);
  10.  

Por defecto los toma todos como enabled y no como yo los marco en la GUI.

El segundo fallo es que no intenta apagarme el ordenador... He probado incluso poniendo al principio del try un

         Runtime.getRuntime().exec(new String[]{"shutdown", "-h", "-f", "-t", "0"});
y también con un

         Runtime.getRuntime().exec("shutdown -h -t 0");

Pero no hace nada...

Uso Windows 8.1 y estoy programando con Eclipse Luna.

Me reitero en que el error no es del controlador, ya que los "cambiaTexto" los hace.

Saludos y gracias ;)