2010-06-04 51 views
9

是否有可能通過Java以編程方式關閉Windows?使用Java關閉Windows

Cheers

+0

[關閉計算機]的可能的複製(http://stackoverflow.com/questions/25637/shutting-down-a-computer) – Adi 2015-11-19 03:39:55

回答

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

更多信息

-i顯示GUI界面,必須是第一個選項

-l註銷(不能與-m選項一起使用)

-r關閉和重新啓動計算機

-m \計算機名(遠程計算機關機/重啓/中止)

- 牛逼XX設置關閉的超時爲xx秒

-c 「comment」 關閉註釋(最多127個字符)


當然,如果您不想使用這種方法,那麼您可以下載一些庫來實現此目的。其中一個例子是Java Windows Shutdown Functions

根據他們的SourceForge頁面:

JWSF - Java的Windows關機功能API允許Java應用程序執行的操作系統,關機,重啓,註銷,鎖定工作站大多數窗口下面的操作。 JWSF使用JNI進行本地調用。 JWSF受LGPL許可證

3

運行命令「shutdown -s」。

編輯:事情是這樣的:在shutdown command爲您的觀賞樂趣

其他一些命令行選項,可能是你的興趣是

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

這也可以使用WMI完成,例如通過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

如果你想關閉它在一定時間內追加-t參數(以秒爲單位) 。

五秒:

String shutdownCmd = "shutdown -s -t5";