java软件使用时间控制_【原创源码】【Java】实现时间段强制关机, 还有玩手机时间控制软件推荐!坚持不熬夜...

本帖最后由 小可爱~ 于 2019-9-23 14:45 编辑

天天熬夜使用电脑, 身体一天不如一天

55fd2b2273b5a8b4531f72773c469d6e.gif

9150e4e5ly1fcs78hqdx8j203p04p3yu.jpg (10.07 KB, 下载次数: 1)

2019-9-16 00:19 上传

55fd2b2273b5a8b4531f72773c469d6e.gif

9150e4e5ly1fcycxpy2s6j208c06a3yq.jpg (12.44 KB, 下载次数: 0)

2019-9-16 00:20 上传

快过来, 我帮你戒掉这个坏习惯

66b6174fd73e11ef4819a09dabb237c2.png, 不过觉得有更好方案的朋友, 希望能够分享出来给大家, 谢谢了

aaf317fd9edef90caa3ee45ab160a16a.gif

来, 这是所有要用到的东西, 一个jar包, 一个脚本, 还有个脚本快捷方式

55fd2b2273b5a8b4531f72773c469d6e.gif

123456.jpg (6.37 KB, 下载次数: 0)

2019-9-16 00:22 上传

代码写的不好, 想要自己修改的, 给, 这是您的源码:

[Java] 纯文本查看 复制代码package com.zhazha;

import org.apache.log4j.LogManager;

import org.apache.log4j.Logger;

import java.io.*;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.Timer;

import java.util.TimerTask;

/**

* @author zhazha

* @version 1.0.0

* @date 2019/9/15 18:28

* @msg

**/

public class Demo {

private static Logger logger = LogManager.getLogger(Demo.class);

/**

* 至少保留两秒时间

*/

private static final String CMD = "shutdown -s -t 2 ";

private static final String PATH = "logs\\lastTime.txt";

/**

* 简单的自动关机

*/

// private static void simpleAutoShutdown() {

// Calendar calendar = Calendar.getInstance();

// int hour = calendar.get(Calendar.HOUR_OF_DAY);

// if (hour >= 0 && hour <= 5) {

// try {

// Runtime.getRuntime().exec(CMD);

// } catch (IOException e) {

// e.printStackTrace();

// }

// }

// }

private static void autoShutdown(String[] args) throws IOException {

if (null == args || args.length != 1) {

args = new String[1];

args[0] = "0:30";

}

/**

* 检测上次关闭系统时间

*/

if (readLastOffSystemTime()) {

return;

}

String strCloseTime = args[0];

String[] split = strCloseTime.split(":");

if (split.length != 2 || "".equals(split[0]) || "".equals(split[1])) {

logger.error("定时关机时间格式不对");

return;

}

logger.info("定时关机时间: " + split[0] + " : " + split[1]);

Calendar c1 = Calendar.getInstance();

Integer offHour = Integer.valueOf(split[0]);

Integer offMinute = Integer.valueOf(split[1]);

int hour = c1.get(Calendar.HOUR_OF_DAY);

int minute = c1.get(Calendar.MINUTE);

Calendar c2 = Calendar.getInstance();

if (offHour < hour) {

c2.add(Calendar.DAY_OF_MONTH, 1);

}

else if (offHour == hour && offMinute < minute) {

c2.add(Calendar.DAY_OF_MONTH, 1);

}

c2.set(Calendar.HOUR_OF_DAY, offHour);

c2.set(Calendar.MINUTE, offMinute);

long sub = c2.getTimeInMillis() - c1.getTimeInMillis();

logger.info("还有" + (sub / 1000 / 60) + "分钟关闭系统");

threadOffSystem(true, sub);

}

private static boolean readLastOffSystemTime() throws IOException {

/**

* 检测上次关机时间文档是否存在, 如果不存在则自动创建

*/

File file = new File(PATH);

if (!file.exists()) {

if (!file.createNewFile()) {

logger.error("文件创建失败, 请手动在程序运行目录下创建logs\\lastTime.txt文件夹和文档");

throw new IOException("文件创建失败, 请手动在程序运行目录下创建logs\\lastTime.txt文件夹和文档");

}

}

/**

* 读取上次关机时间

*/

BufferedReader bufferedReader = new BufferedReader(new FileReader(file));

try (bufferedReader) {

String lastTime = bufferedReader.readLine();

// 检测关机格式

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

long lastTimeMis = sdf.parse(lastTime).getTime();

long curTimeMis = new Date().getTime();

long flag = curTimeMis - lastTimeMis;

if (flag <= (5 * 60 * 60 * 1000)) {

threadOffSystem(false, 0);

return true;

}

} catch (Exception e) {

e.printStackTrace();

}

return false;

}

/**

* 线程关机

*

* @param flag

* true 正常线程关机, false 文件读取关机, 不需要重写最后关机时间

* @param minute

* 多少秒关机

*/

private static void threadOffSystem(boolean flag, long minute) {

System.out.println("关机");

new Timer().schedule(new TimerTask() {

public void run() {

BufferedWriter writer = null;

try {

Runtime.getRuntime().exec(CMD);

if (flag) {

writer = new BufferedWriter(new FileWriter(PATH));

writer.write(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));

}

} catch (Exception e) {

e.printStackTrace();

logger.error("关闭系统失败");

} finally {

if (writer != null) {

try {

writer.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

System.exit(0);

}

}, minute);

}

/**

* 输入格式 1:1

*

* @param args

*/

public static void main(String[] args) throws IOException {

autoShutdown(args);

// simpleAutoShutdown();

}

}

来, 这是vbs脚本(至于为啥不用 cmd 是因为开机的时候程序启动比较多, 所以cmd启动窗口会很慢, 有机会把 cmd 关掉, 当然隐藏也行, 随你

50ac31080dfbdc3592f1ced99aba0428.gif)

[Asm] 纯文本查看 复制代码Set ws = CreateObject("Wscript.Shell")

ws.run "AutoShutdown.jar 1:0",vbhide

好, 源码就这么简单, 剩下的都是电脑上的操作了

第一步: 打开vbs脚本文件看到下面的这行代码, 里面的 1:0 就是关机时间, 你要改啥就该啥, 不过必须是合理的时间, 如 00:30 , 别给我整个 25:61 分 哈

不过可能会有一分钟的延迟哦~~~

ws.run "AutoShutdown.jar 1:0",vbhide

为啥不用计算机管理器里面的  任务计划  功能, 因为我懒~~~

703cd35c178175e39d655d943cdf2ac6.gif

第二步: 把编译好的windows可直接运行的jar包和vbs脚本放在相同的目录下

55fd2b2273b5a8b4531f72773c469d6e.gif

1.jpg (41.73 KB, 下载次数: 0)

2019-9-15 23:39 上传

第三步: 直接给他丢到启动选里面(我win7, 启动目录: C:\Users\XXXX\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)

55fd2b2273b5a8b4531f72773c469d6e.gif

2.jpg (67.66 KB, 下载次数: 1)

2019-9-15 23:39 上传

第四步: 重启电脑看下, jar包所在的目录下面是不是多了个文件, 看下里面的内容, 就知道成功没

55fd2b2273b5a8b4531f72773c469d6e.gif

3.jpg (73.33 KB, 下载次数: 0)

2019-9-15 23:43 上传

来, 这是项目的源码和编译后的jar程序(程序在out文件夹中):链接:https://pan.baidu.com/s/1l5byOCwhrZeLQF9Ow0OYHA提取码:7jyg哦, 对了, 还有一款定时段控制手机的软件不错, 只要时间一到, 软件就把手机锁住咯, 直到你设置的结束时间

当然白名单内的app可以自己设置, 一个月有三次取消锁机的机会~~~

番茄TODO, (这是我从360手机助手下载来的哦, 不知道安全不, 所以记住这个图标自己去手机上查找吧~~~)

8c9b3050b70afcef6cc78e149b39f32a.gif

55fd2b2273b5a8b4531f72773c469d6e.gif

dsad.jpg (4.6 KB, 下载次数: 0)

2019-9-16 00:09 上传

链接:https://pan.baidu.com/s/1TVPLicIQpsCenj9RkY0ufQ

提取码:zq9k

老板, 电脑关机了, 是电脑自己动的手, 我没按~~~可以下班了么???

55fd2b2273b5a8b4531f72773c469d6e.gif

6af89bc8gw1f8ns3hre9rg203m02p3yl.gif (13.13 KB, 下载次数: 1)

2019-9-16 00:36 上传

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值