`

用java实现PC限时关机

    博客分类:
  • J2SE
阅读更多
转载:http://hi.baidu.com/triceratops/blog
import java.io.*;
import javax.swing.JOptionPane;

import java.util.Calendar;
import java.io.Serializable;

public class TimeController{
private Timer timer;
private File f = new File("timer");
public void execute(int hour) throws IOException,ClassNotFoundException,InterruptedException{
   FileInputStream fis;
   ObjectInputStream ois;
   while(true){
    try{
     fis = new FileInputStream(f);
     ois = new ObjectInputStream(fis);
     timer = (Timer)ois.readObject();
     ois.close();
    }
    catch(FileNotFoundException ioe){
     saveTimer(new Timer());
     continue;
    }
    if(timer.isTimeExhausted() && timer.isTodayOpened()){
     closePC();
     JOptionPane.showMessageDialog(null,"今日开机时间已经满"+hour+"小时!","警告!",0);
     break;
    }
    if(!timer.isTodayOpened()){
     timer.setTimeExhausted(false);
     timer.setDate();
    }
    timer.setStartTime();
    Thread.sleep(10*60*1000);
    timer.setCurrentTime();
    timer.addEclipsedSeconds();
    saveTimer(timer);
    if(timer.isShutdownTime(hour)){
     closePC();
     timer.reset();
     saveTimer(timer);
     JOptionPane.showMessageDialog(null,"请注意:10分钟后将自动关机!","警告!",0);
     break;
    }
   }
}

private void saveTimer(Timer timer) throws IOException{
   FileOutputStream fos = new FileOutputStream(f);
   ObjectOutputStream oos = new ObjectOutputStream(fos);
   oos.writeObject(timer);
   oos.close();
}

private void closePC() {
   new Thread(new Runnable(){
    public void run() {
     try{
      if(timer.getEclipsedSeconds() != 0)
       Thread.sleep(10*60*1000);
      Runtime.getRuntime().exec("shutdown -s");
     }
     catch(Exception e){
      e.printStackTrace();
     }
    }
   }).start();
}

public static void main(String[] args) throws Exception{
   int hour = 3;
   if(args.length != 0)
    hour = Integer.parseInt(args[0]);
   new TimeController().execute(hour);
}
}

=============================================

public class Timer implements Serializable{
transient private long startTime;
transient private long currentTime;
private long eclipsedSeconds;
private boolean timeExhausted;
private int date;

public Timer(){
   setStartTime();
   setCurrentTime();
   setDate();
}

public void setStartTime(){
   startTime = Calendar.getInstance().get(Calendar.HOUR_OF_DAY)*60*60+
     Calendar.getInstance().get(Calendar.MINUTE)*60+
     Calendar.getInstance().get(Calendar.SECOND);
}

public long getStartTime(){
   return startTime;
}

public void setCurrentTime(){
   currentTime = Calendar.getInstance().get(Calendar.HOUR_OF_DAY)*60*60+
       Calendar.getInstance().get(Calendar.MINUTE)*60+
       Calendar.getInstance().get(Calendar.SECOND);
}

public long getCurrentTime(){
   return currentTime; 
}

public void addEclipsedSeconds(){
   eclipsedSeconds += currentTime - startTime;
}

public long getEclipsedSeconds(){
   return eclipsedSeconds;
}

public void setDate(){
   date = Calendar.getInstance().get(Calendar.DATE);
}

public int getDate(){
   return date;
}

public void setTimeExhausted(boolean timeExhausted){
   this.timeExhausted = timeExhausted;
}

public boolean isTimeExhausted(){
   return timeExhausted;
}

public boolean isTodayOpened(){
   return date == Calendar.getInstance().get(Calendar.DATE);
}

public boolean isShutdownTime(int hour){
   if(eclipsedSeconds>=hour*60*60)
    return true;
   return false;
}

public void reset(){
   eclipsedSeconds = 0;
   setTimeExhausted(true);
}

public String toString(){
   String eclipsedTime = "今日累计使用了:";
   long temp = getEclipsedSeconds();
   eclipsedTime += temp/(60*60) + "小时";
   temp = temp%(60*60);
   eclipsedTime += temp/60 + "分";
   temp = temp%60;
   eclipsedTime += temp + "秒";
   return eclipsedTime;
}
}

分享到:
评论

相关推荐

    java版的定时关机小程序 使用java 语言实现

    在这个特定的场景中,我们讨论的是使用Java来实现一个定时关机的小程序。这个小程序能够帮助用户在预设的时间点自动关闭计算机,这对于需要定时执行任务或者节省电力的情况非常有用。 首先,实现定时关机功能的关键...

    java实现的多功能自动关机小程序

    本项目“java实现的多功能自动关机小程序”就是一个利用Java编程语言来创建的实用工具,它具备了三种主要功能:倒计时自动关机、按系统时间自动关机以及每次使用电脑时定时关机。 首先,我们来详细探讨倒计时自动...

    java定时关机小程序

    Java定时关机小程序是一种利用Java编程语言实现的实用工具,它可以按照用户设定的时间自动关闭计算机。这个程序在日常生活中或企业环境中非常有用,比如在执行大量计算任务后自动关闭电脑,或者在无人值守时进行系统...

    java 实现整张网页快照

    总的来说,这个项目提供了一种使用Java和JWebBrowser实现网页全貌快照的方法,解决了许多现有解决方案只能截取当前视口大小的问题。通过这样的工具,开发者可以更方便地对网页进行记录和分析。不过,需要注意的是,...

    java实现的简易xshell终端

    总之,Java实现简易Xshell终端涉及到的主要知识点有:JSch库的使用,SSH连接的建立,命令的发送与接收,字符编码问题的处理,以及可能的图形用户界面开发。通过这些技术,我们可以创建一个功能丰富的远程服务器管理...

    java实现软件锁屏功能

    在Java编程环境中,实现软件锁屏功能涉及到对操作系统级别的交互以及图形用户界面(GUI)的控制。虽然Java标准库并不直接提供锁屏API,但我们可以借助于Java的JNI(Java Native Interface)或者第三方库来实现这个...

    Java实现贪吃蛇小游戏.zip

    Java实现贪吃蛇小游戏Java实现贪吃蛇小游戏Java实现贪吃蛇小游戏Java实现贪吃蛇小游戏 Java实现贪吃蛇小游戏Java实现贪吃蛇小游戏Java实现贪吃蛇小游戏Java实现贪吃蛇小游戏 Java实现贪吃蛇小游戏Java实现贪吃蛇小...

    几个推荐算法的java实现

    - 在Java中实现SVD,通常会使用如Apache Commons Math或Jblas等数学库,它们提供了高效的矩阵操作接口。通过迭代优化,找到最佳的U、Σ和V矩阵,从而完成推荐。 3. **RSVD (随机化SVD)**: - 随机化SVD是在传统...

    Java WindowsXP自动关机程序

    这个程序的特点是其简洁的算法和美观的用户界面,使得用户能够轻松地设定关机时间,实现自动化操作,提高了电脑使用的便利性。 在Java中,实现自动关机功能主要涉及到以下几个关键知识点: 1. **Java桌面应用开发*...

    java实现扫雷游戏.zip

    java实现扫雷游戏java实现扫雷游戏java实现扫雷游戏 java实现扫雷游戏java实现扫雷游戏java实现扫雷游戏 java实现扫雷游戏java实现扫雷游戏java实现扫雷游戏 java实现扫雷游戏java实现扫雷游戏java实现扫雷游戏 java...

    JAVA实现EXCEL XIRR函数

    JAVA实现EXCEL XIRR函数

    Java实现的PC版2048游戏AI. Alpha-Beta树,minimax算法..zip

    java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心下载使用。 java课程...

    java代码开源关机软件

    在Java中实现关机功能,主要是通过操作系统提供的API或者命令来完成。Java提供了`Runtime`类,通过`exec()`方法可以执行系统命令。在Windows系统中,通常会使用`shutdown`或`poweroff`命令来执行关机操作。例如,...

    用java实现的栈Stack类

    用java实现的栈Stack类,不继承任何集合类,用对象数组实现

    java实现定时任务java实现定时任务

    java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现定时任务java实现...

    kerberos的java实现

    在Java中,我们可以使用`KerberosLoginModule`实现Kerberos认证。这个模块是Java的登录框架(JAAS,Java Authentication and Authorization Service)的一部分,允许用户根据策略文件配置认证流程。 - **配置JAAS...

    用Java实现的网络唤醒工具

    6. **实现原理**:Java程序首先会创建一个包含魔术包的数据流,然后使用Socket编程来建立与目标网络的连接。一旦连接建立,魔术包将被发送到广播地址,唤醒目标主机。 7. **安全性考虑**:虽然WOL提供了便利,但也...

    java 实现 icmp协议测试

    java 实现 icmp协议测试 需要在java lib目录下添加libjpcap.so文件

    迅雷下载接口java实现

    本话题将深入探讨如何使用Java实现迅雷下载接口,这是一项利用迅雷的动态链接库(DLL)和C++开放接口来提升下载效率和稳定性的技术实践。 首先,我们需要了解迅雷的C++开放接口。迅雷为了方便开发者集成其下载功能...

Global site tag (gtag.js) - Google Analytics