Linux论坛's Archiver

《开源》旗舰电子杂志2009年第1期火热下载!

wudongchina 发表于 2008-9-19 17:11

怎么用JAVA调用系统的关机,重启命令?

怎么用JAVA调用系统的关机,重启命令?大虾,知道的说一下。有一个例子更好。:handshake

wudongchina 发表于 2008-9-19 17:14

在WINDOWS 下怎么添加启动项服务????

在WINDOWS 下怎么添加启动项服务????是否可以做??我没有从来没有做过。。。

sanshao 发表于 2008-10-6 22:34

使用JNI

如果要系统关机,就需要调用windows的API了
所以要通过JNI来踩调用c++程序(使用JNI的程序失去可移植性)
例如:
class   HelloWorld   {   
          public   native   void   displayHelloWorld();   
          static   {   
                  System.loadLibrary("hello");   
          }   
            
          public   static   void   main(String[]   args)   {   
                  new   HelloWorld().displayHelloWorld();   
          }   
  }   
   
  HelloWorldImp.c.   
   
  #include   <jni.h>   
  #include   "HelloWorld.h"   
  #include   <stdio.h>   
  JNIEXPORT   void   JNICALL     
  Java_HelloWorld_displayHelloWorld(JNIEnv   *env,   jobject   obj)     
  {   
          printf("Hello   world!\n");   
          return;   
  }

你在网上搜索JNI,会得到满意的回复!

sanshao 发表于 2008-10-6 22:36

只能用JNI了

我查看了java的lang包system下API,都是关于jvm的,对系统是没有操作的。

bzrjlm@163.com 发表于 2008-12-31 17:59

[i=s] 本帖最后由 bzrjlm@163.com 于 2008-12-31 18:02 编辑 [/i]

我来说几句,
以下是代码:
-----------------------------------Code begin-----------------------------------------------------------
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


/**
* @author Liming
* @time Dec 31, 2008 5:48:37 PM
* @version 1.0
*/
public class NativeResourceCaller {

    public static void main(String args[]) {
        Runtime runtime = Runtime.getRuntime();
        // 可以调用本地的exe文件(一般XP系统在C:\WINDOWS下都个快速关机的文件)
        // 或bat文件(关机命令:shutdown,自己写)
        try {
            // Process process = runtime.exec("C:\\Program Files\\xxx.exe");
            Process process = runtime.exec("F:\\bat.bat");
            // 有些人说Java不支持bat文件,可能说的是运行exe会弹出exe程序,而bat不会像双击bat文件弹出dos窗口
            // 但实际是起作用了,可以看我的测试bat:
            // 在xxx.bat文件中写入:explorer [url]http://hi.baidu.com/qq295361921[/url]
            // 虽然没有弹出dos窗口,但这条命令把网页打开了,这也正是运行bat的最终效果
            // 所以我觉得,这可行,可以试试。
            // 还有人提出quick batch file compiler工具将bat转化成exe文件,其实效果一样
            BufferedReader br = new BufferedReader(new InputStreamReader(
                    process.getInputStream()));
            String str = null;
            while ((str = br.readLine()) != null) {
                System.out.println(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
-----------------------------------Code end-----------------------------------------------------------

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.