• jQueryrocket


    疫情期间,应公司要求需要每天发送体温,但是老忘(有时候在追剧或者打游戏)。于是,这个demo诞生了。

    package QQWchat;
     
    import java.awt.AWTException;
    import java.awt.Robot;
    import java.awt.Toolkit;
    import java.awt.datatransfer.Clipboard;
    import java.awt.datatransfer.StringSelection;
    import java.awt.datatransfer.Transferable;
    import java.awt.event.KeyEvent;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Timer;
    import java.util.TimerTask;
     //不过需要自己打开微信窗口
    public class QQWchattimer {
        
        private static long getRandom(int min, int max) {
            return Math.round(Math.random() * (max - min) + min);
        }
        
        public static void main(String[]args) {
            
          Calendar calendar = Calendar.getInstance();
            /**
             * 指定触发的时间      现在指定时间为   2020年3月10号  14点  43 分 1 秒时触发
             */
            calendar.set(Calendar.MONTH, 3);//设置日期 这里10表示11月份    11就表示12月份,索引指示月份4=May
            calendar.set(Calendar.DAY_OF_MONTH,13);//设置日期为27号
            calendar.set(Calendar.HOUR_OF_DAY, 16); //设置15点的时候触发
            calendar.set(Calendar.MINUTE, 30); //设置43分钟的时候触发
            calendar.set(Calendar.SECOND, 1); //设置第一秒的时候触发
            
            Date time = calendar.getTime();
            
            System.out.println("计划时间为:"+time+",还需手动打开窗口。设置完成,去玩游戏吧");
            //Timer timer = new Timer();
            //timer.schedule(new RemindTask(), time); 
           
            Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                    public void run(){
                         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
                         System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
                        //  String sentence = "everybody早上好,我是你们帅气又迷人的Kaspar哥哥,今天阳光明媚,今天多云转晴,当前时间为"+df.format(new Date())+",今晚早点睡觉,晚安、晚安";// 定义要发送的话
                        //way1
      /*                  double [] arr = {36.1,36.8,36.9}; //自己填数不想写了
                        //产生0-(arr.length-1)的整数值,也是数组的索引
                        int index=(int)(Math.random()*arr.length);
                        double rand = arr[index];
                        String sentence1=Double.toString(rand)+" ,";
                        System.out.println(sentence1);  */
                        //way2
                     double b=getRandom(361, 369);
                     String sentence=Double.toString(b/10)+" ,";
                        System.out.println(sentence);
                        
                         Robot robot = null;
                        try {
                            robot = new Robot();
                        } catch (AWTException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }// 创建Robot对象
                        robot.delay(3000);// 延迟三秒,主要是为了预留出打开窗口的时间,括号内的单位为毫秒
                        Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
                        String[] authors = sentence.split("[,]");// 字符串根据,分割
                        for (int j = 0; j < 1; j++) {//循环次数
                            for (int i = 0; i < authors.length; i++) {
                                String sentencet = authors[i];
                                Transferable tText = new StringSelection(sentencet);
                                clip.setContents(tText, null);
                                // for (int j = 1; j <= 1; j++) {
                                // 以下两行按下了ctrl+v,完成粘贴功能
                                robot.keyPress(KeyEvent.VK_CONTROL);
                                robot.keyPress(KeyEvent.VK_V);
                                //这些键可以瞎鸡儿调
                                robot.keyRelease(KeyEvent.VK_CONTROL);// 释放ctrl按键,像ctrl,退格键,删除键这样的功能性按键,在按下后一定要释放,不然会出问题。crtl如果按住没有释放,在按其他字母按键是,敲出来的回事ctrl的快捷键。
                                robot.delay(1000);// 延迟一秒再发送,不然会一次性全发布出去,因为电脑的处理速度很快,每次粘贴发送的速度几乎是一瞬间,所以给人的感觉就是一次性发送了全部。这个时间可以自己改,想几秒发送一条都可以
                                robot.keyPress(KeyEvent.VK_ENTER);// 回车 
                                // }
                            }
                        }
            
                 }
            }, time);
                    //  },  10000, 86400000);//10000表示延迟十秒执行,86400000表示24*60*60秒后也就是每天循环执行一次
        }
    }

    设置好时间,执行上面这个,打开需要的微信窗口。你就可以该干嘛干嘛去了。

  • 相关阅读:
    #region...#endregion: C# syntax
    Regular Expression in C#
    北京邮电大学网络与交换技术国家重点实验室
    C#: 得到系统中的环境变量(源代码)
    Contrasting C# and Java Syntax(摘录)
    Using ZipLib to create a Zip File in C#
    SQL Server DO's and DONT's 摘录
    SQL View 的使用语法与原则
    时隔两年
    VS 里的快捷键定制
  • 原文地址:https://www.cnblogs.com/kaspar/p/12695664.html
Copyright © 2020-2023  润新知