java实现腾讯会议自动入会

java实现腾讯会议自动入会

由于口罩原因线上会议较多,还经常在午休等时间开始,所有就实现了一个java版的自动入会,原理是使用鼠标控制完成自动填充和点击。自己实现可以更简单一点直接先自己打开会议,把该输入的都弄好,直接让程序到点执行最后一步的点击加入就好了

效果动图(不太会做动图,导出的有点模糊):java实现腾讯会议自动入会_第1张图片

完整代码:

package com.test.template.utils;

import java.awt.*;
import java.awt.datatransfer.StringSelection;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.time.LocalDateTime;

public class AwtUtils {
    //时间间隔 1s
    final static int DELAY = 1000;

    //鼠标移动到指定坐标,然后单击
    public static void click(Robot rt, int x, int y) {
        rt.mouseMove(-1, -1);//初始化
        rt.delay(DELAY);
        rt.mouseMove(x, y);//制动到指定位置
        rt.delay(DELAY);
        pressMouse(rt, InputEvent.BUTTON1_MASK);
    }

    public static void doubleClick(Robot rt, int x, int y) {
        rt.mouseMove(-1, -1);//初始化
        rt.delay(100);
        rt.mouseMove(x, y);//制动到指定位置
        pressMouse(rt, InputEvent.BUTTON1_MASK);
        pressMouse(rt, InputEvent.BUTTON1_MASK);
    }

    //鼠标点击事件
    public static void pressMouse(Robot rt, int m) {
        rt.mousePress(m);
        rt.delay(100);
        rt.mouseRelease(m);
    }

    //将指定内容粘贴到粘贴板 然后ctrl+v
    public static void outPut(String str, Robot rt) {
        StringSelection selection = new StringSelection(str);
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection, selection);
        keyPressWithCotrl(rt, KeyEvent.VK_V);
    }

    //ctrl组合键 相当于按下CTRL再按下传入的key值
    public static void keyPressWithCotrl(Robot rt, int key) {
        rt.keyPress(KeyEvent.VK_CONTROL);
        rt.keyPress(key);
        rt.keyRelease(KeyEvent.VK_CONTROL);
        rt.keyRelease(key);
        rt.delay(DELAY);
    }

    public static void main(String[] args) throws InterruptedException {
        //程序启动地址,可以通过桌面快捷方式右键属性查看
        String cmd = "D:\\txmeeting\\WeMeet\\WeMeet\\wemeetapp.exe";
        String meetingId = "123456789";
        String name = "test";
        String exTime = "2022-09-29T09:17:00";
        System.out.println("会议号:" + meetingId + "; 昵称:" + name + "; 预约时间:" + exTime);
        //软件启动对应按钮的坐标可以使用Snipaste定位(注意:屏幕使用125%缩放的记得除以1.25)
        //按钮1:加入会议  按钮2:会议号输入位置 (相同位置)
        int x1 = 628, y1 = 255;
        //按钮3:您的名称
        int x2 = 640, y2 = 298;
        //按钮2:进入会议
        int x3 = 768, y3 = 722;
        LocalDateTime expectedTime = LocalDateTime.parse(exTime);
        while (true) {
            if (expectedTime.isBefore(LocalDateTime.now())) {
                Runtime rt = Runtime.getRuntime();
                Process p = null;
                try {
                    p = rt.exec(cmd);
                    System.out.println("正在启动应用程序……");
                    //等待程序启动,有些电脑比较卡的可以适当调大等待时间,或者提前打开,但是不要移动位置
                    Thread.sleep(5000L);
                    Robot root = new Robot();
                    //点击加入会议
                    System.out.println("加入会议……");
                    click(root, x1, y1);
                    Thread.sleep(1000L);
                    //点击会议号
                    click(root, x1, y1);
                    Thread.sleep(1000L);
                    //粘贴会议号
                    System.out.println("输入会议号:" + meetingId);
                    outPut(meetingId, root);
                    Thread.sleep(1000L);
                    //双击名称输入框
                    doubleClick(root, x2, y2);
                    Thread.sleep(500L);
                    //粘贴名称
                    System.out.println("输入会议昵称:" + name);
                    outPut(name, root);
                    Thread.sleep(500L);
                    click(root, x3, y3);
                    System.out.println("启动成功!");
                    break;
                } catch (Exception e) {
                    e.printStackTrace();
                    System.out.println("启动过程出错!");
                }
            }
            Thread.sleep(1000L);
        }
    }
}

以上就是所有实现,各位可以根据自己的需求进行调整,参考博客:https://blog.csdn.net/Wang_White_Pony/article/details/119736326

你可能感兴趣的:(java技术学习,java,开发语言)