2010-06-04 23 views
9

¿Es posible cerrar Windows programáticamente con Java?Apagar Windows con Java

Cheers

+0

duplicado posible de [apagar un equipo] (http://stackoverflow.com/questions/25637/shutting-down-a-computer) – Adi

Respuesta

17
String shutdownCmd = "shutdown -s" 
Process child = Runtime.getRuntime().exec(shutdownCmd); 

Más información sobre el shutdown command para su placer visual

Algunas otras opciones de línea de comandos que pueden ser de interés para usted es

-i Pantalla interfaz gráfica de usuario, debe ser la primera opción

-l cierren la sesión (no se puede usar con la opción -m)

shutdown -r y reinicie el equipo

-m \ nombre de equipo (ordenador remoto para apagar/reiniciar/cancelar)

- t xx Establecer tiempo de espera para la desconexión a xx segundos

-c "comentario" comentario apagado (máximo de 127 caracteres)


Por supuesto, si prefiere no utilizar este método, hay bibliotecas que puede descargar para lograrlo. Un ejemplo de esto sería Java Windows Shutdown Functions.

De acuerdo con su página de SourceForge:

JWSF - Java de Windows funciones de apagado API permite a las aplicaciones Java para realizar las siguientes operaciones en la mayoría de las ventanas del sistema operativo, apagar, reiniciar, cerrar sesión, estación de trabajo de bloqueo. JWSF hace llamadas nativas usando JNI. JWSF está sujeto a la licencia LGPL

3

Ejecute el comando "shutdown -s".

Editar: Algo como esto:

Process p = Runtime.getRuntime().exec("shutdown -s"); 
3

Esto también puede hacerse mediante WMI, por ejemplo a través JACOB:

import java.util.Enumeration; 

import com.jacob.activeX.ActiveXComponent; 
import com.jacob.com.ComThread; 
import com.jacob.com.EnumVariant; 
import com.jacob.com.Variant; 

public abstract class Shutdown { 

    public static void main(String[] args) { 
     ComThread.InitMTA(); 
     try { 
      ActiveXComponent wmi = new ActiveXComponent("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\\\."); 
      Variant instances = wmi.invoke("InstancesOf", "Win32_OperatingSystem"); 
      Enumeration<Variant> en = new EnumVariant(instances.getDispatch()); 
      ActiveXComponent os = 
       new ActiveXComponent(en.nextElement().getDispatch()); 
      os.invoke("Win32Shutdown", 1, 0); 
     } finally { 
      ComThread.Release(); 
     } 
    } 

} 
1

Si desea cerrar en cierto tiempo agregar el parámetro -t (en segundos) .

durante cinco segundos:

String shutdownCmd = "shutdown -s -t5";