自动打字软件完美解决不能复制粘贴(批改网)自动输入(金山打字)等问题
简单一个小软件完全免费
有问题欢迎咨询q3095563063一起讨论

源码主要基于Robot类
Robot类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。

批改网等考试软件不允许复制粘贴自己打太麻烦
于是就写了这个。点击开始模拟输入会在5秒钟后开始模拟输入。

Java中使用Robot类时,需要导入java.awt包

package zezedazi;

import java.awt.Robot;

public class TypeRobot {
private Robot robot;
private int delay;

public TypeRobot(Robot robot) {this.robot = robot;
}TypeRobot(Robot robot, int delay) {this.robot = robot;this.setDelay(delay);
}void typeLowerCase(char c) {robot.keyPress(c-32);robot.keyRelease(c-32);delay();
}void typeUpperCase(char c) {robot.keyPress(16);robot.keyPress(c);robot.keyRelease(16);robot.keyRelease(c);delay();
}void typeNumber(char c) {robot.keyPress(c);robot.keyRelease(c);delay();
}void typeOther(char c) {switch(c) {case '+':pressKeyWithCtrl(61);break;case '-':pressKey(45);break;case '*':pressKeyWithCtrl(56);break;case '/':pressKey(47);break;case '\'':pressKey(222);break;case ':':pressKeyWithCtrl(59);break;case '{':pressKeyWithCtrl(91);break;case '}':pressKeyWithCtrl(93);break;case '[':pressKey(91);break;case ']':pressKey(93);break;case ';':pressKey(59);break;case '#':pressKeyWithCtrl(51);break;case '!':pressKeyWithCtrl(49);break;case '%':pressKeyWithCtrl(53);break;case '&':pressKeyWithCtrl(55);break;case '=':pressKey(61);break;case ' ':pressKey(32);break;case '  ':pressKey(9);break;case '\n':pressKey(10);break;case '<':pressKeyWithCtrl(44);break;case '>':pressKeyWithCtrl(46);break;case '?':pressKeyWithCtrl(47);break;case '.':pressKey(46);break;case '"':pressKeyWithCtrl(222);break;case '(':pressKeyWithCtrl(57);break;case ')':pressKeyWithCtrl(48);break;case '\\':pressKey(92);break;case ',':pressKey(44);break;case '@':pressKeyWithCtrl(50);break;case '|':pressKeyWithCtrl(92);break;case '^':pressKeyWithCtrl(54);break;case '_':pressKeyWithCtrl(45);break;}
}public void setDelay(int delay) {this.delay = Math.max(delay, 0);
}public int getDelay() {return delay;
}private void delay() {robot.delay(delay);
}private void pressKeyWithCtrl(int key) {robot.keyPress(16);robot.keyPress(key);robot.keyRelease(key);robot.keyRelease(16);delay();
}private void pressKey(int key) {robot.keyPress(key);robot.keyRelease(key);delay();
}

}
Window类是不依赖其他容器而独立存在的一种容器,他有两个子类分别是Frame和Dialog,Frame用于创建一个框架窗口,作为程序的主页面,Dialog类用于创建一个对话框实现与用户的信息交换,
package zezedazi;

import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import javax.swing.*;

@SuppressWarnings(“serial”)
class Window extends JFrame {
private static String typeString = null;
private static TypeRobot robot = null;
private Thread thread = null;
private JFileChooser fileChooser = new JFileChooser(“.”);
private boolean isSuspend = false;

@SuppressWarnings("deprecation")
Window(String title, Dimension size) {super(title);this.setSize(size);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocationRelativeTo(null);try {robot = new TypeRobot(new Robot(), 50);} catch (AWTException e) {System.out.println("创建机器人失败");System.exit(0);}JButton btn_clipboard = new JButton("从剪贴板导入");JButton btn_file = new JButton("从文件导入");JButton btn_ok = new JButton("开始模拟输入");JButton btn_stop = new JButton("暂停");JTextField jf_delay = new JTextField(4);JButton btn_setDelay = new JButton("确定");btn_stop.setEnabled(false);Container c = this.getContentPane();c.setLayout(new BorderLayout());JPanel panelNorth = new JPanel();panelNorth.add(btn_file);panelNorth.add(btn_clipboard);c.add(panelNorth, BorderLayout.NORTH);JTextArea textArea = new JTextArea();textArea.setFont(new Font("宋体", Font.BOLD, 20));JScrollPane jsp = new JScrollPane(textArea);jsp.setPreferredSize(new Dimension(100, 100));c.add(jsp, BorderLayout.CENTER);JPanel panelSouth = new JPanel();panelSouth.add(btn_ok);panelSouth.add(btn_stop);panelSouth.add(new JLabel("延迟:"));panelSouth.add(jf_delay);panelSouth.add(btn_setDelay);c.add(panelSouth, BorderLayout.SOUTH);btn_clipboard.addActionListener(event -> {typeString = getSysClipboardText();textArea.setText(typeString);});btn_setDelay.addActionListener(event->{int delay = Integer.parseInt(jf_delay.getText());robot.setDelay(delay);});btn_file.addActionListener(event -> {int result = fileChooser.showOpenDialog(Window.this);if (result == JFileChooser.APPROVE_OPTION) {typeString = getContentFromFile(fileChooser.getSelectedFile());textArea.setText(typeString);}});btn_stop.addActionListener(event -> {if(!isSuspend) {thread.suspend();isSuspend = !isSuspend;btn_stop.setText("继续");} else {new Thread(() -> {btn_stop.setEnabled(false);for (int i = 0; i < 3; i++) {btn_stop.setText((3 - i) + "");try {Thread.sleep(1000);} catch (InterruptedException e) {}}thread.resume();isSuspend = !isSuspend;btn_stop.setEnabled(true);btn_stop.setText("暂停");}).start();}});btn_ok.addActionListener(event -> {typeString = textArea.getText();if (typeString.isEmpty()) {System.out.println("还没有导入任何数据");} else {btn_stop.setEnabled(true);thread = new Thread(() -> {int delay = 5;btn_ok.setEnabled(false);try {for(int i = 0; i < delay; i++) {btn_ok.setText((delay-i)+"");Thread.sleep(1000);}} catch (InterruptedException e) {e.printStackTrace();}btn_ok.setText("正在模拟...");char temp;for (int i = 0; i < typeString.length(); i++) {temp = typeString.charAt(i);if (temp >= 'A' && temp <= 'Z') {robot.typeUpperCase(temp);} else if (temp >= 'a' && temp <= 'z') {robot.typeLowerCase(temp);} else if (temp >= '0' && temp <= '9') {robot.typeNumber(temp);} else {robot.typeOther(temp);}}btn_ok.setText("开始模拟输入");btn_ok.setEnabled(true);btn_stop.setEnabled(false);});thread.start();}});this.setAlwaysOnTop(true);this.setVisible(true);
}private String getContentFromFile(File file) {InputStream is = null;StringBuilder sb = null;try {is = new FileInputStream(file);byte[] buffer = new byte[1024];int len;sb = new StringBuilder();while ((len = is.read(buffer)) >= 0) {sb.append(new String(buffer, 0, len));}} catch (FileNotFoundException e) {System.out.println("文件不存在!");} catch (IOException e1) {System.out.println("IO异常");} finally {if (is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}}if (sb == null) {return "";} else {return sb.toString();}
}//从剪贴板导入数据
private String getSysClipboardText() {String ret = "";Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();Transferable clipTf = sysClip.getContents(null);if (clipTf != null) {if (clipTf.isDataFlavorSupported(DataFlavor.stringFlavor)) {try {ret = (String) clipTf.getTransferData(DataFlavor.stringFlavor);} catch (Exception e) {e.printStackTrace();}}}return ret;
}

}

打开Main.java文件,可以看到该应用的启动方法。通过主线程执行main(String[] args)方法启动应用,然而mian(String[] args)方法只调用了launch(args)方法,该方法的目的就是调用整个应用配置以及资源。
package zezedazi;

import java.awt.Dimension;

public class Main {
public static void main(String[] args) {
new Window(“TypeRobot”, new Dimension(500, 500));
}
}

自动打字软件完美解决不能复制粘贴(批改网)自动输入(金山打字)等问题相关推荐

  1. 前端开发过程中,经常遇到复制粘贴后自动空白一行,该如何解决这个问题哪?

    在前端开发中,我们经常会遇到复制粘贴的需求,不论是从其他地方复制代码还是从网上找到的资料,都需要进行粘贴操作.但是,在进行粘贴操作时,很容易出现一个问题:自动添加空白行.这种情况下,如果不处理,就会影 ...

  2. 电脑中病毒自动安装软件怎么解决

    如果在一些不知名的网站或者来源不明的渠道下文件的话可能会造成电脑中病毒等情况发生.最近就有网友反映自己的电脑中病毒自动安装软件怎么办,严重影响电脑的正常使用.下面小编就教下大家电脑中病毒自动安装软件的 ...

  3. 电脑重启之后流氓软件自动安装之完美解决办法

    电脑重启之后流氓软件自动安装之完美解决办法: 1. win+R 运行msconfig 在startup(开机启动) 这一项里面, 把所有对勾全部去掉( disable all), 你可以发现这里面就有 ...

  4. 解决虚拟机复制粘贴不能用的问题

    问题 我也是才刚使用CentOS7没多久,搭建好环境后出现比较头疼的问题就是 Windows 和 Linux 之间无法复制粘贴文本和文件,这个问题只要在虚拟机中安装 VMTools 就能解决,但是不知 ...

  5. 【问题解决】微软OneNote使用笔记,Ditto解决OneNote复制粘贴文本输出图片问题

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 白嫖用onenote和onedrive有段时间了,简单粗暴好用,没得说. 先总结(BB ...

  6. CMD窗口--解决无法复制粘贴文字的办法

    打开CMD 假如我们要复制其中的一些东西,我们会在窗口中右键点击,然后选择标记,选中我们想要复制的东西,然后进行Ctrl + C复制粘贴,就完成了. 但是这个有个弊端,就是只允许我们在CMD窗口之内进 ...

  7. oracle policies失效,复制粘贴功能失效不能用怎么解决?复制粘贴不能用的图文处理方法...

    使用电脑的用户是越来越多了,有用户遇到复制粘贴功能失效不能用的情况,点击右键复制某段文字时,右键菜单"粘贴"选项却是灰色的,不能复制.粘贴.系统复制粘贴功能失效不能用怎么办?下面, ...

  8. 关于Android 模拟器复制粘贴及中文输入的问题

    问题 平时开发时候用的Android Studio自带的模拟器调试 ,但应用输入框输入时存在以下两个问题 不支持ctrl+c ctrl+v 方式复制粘贴 默认模式下,不支持中文输入 解决方案 左键长按 ...

  9. 魅族html查看程序退出,魅族MX2左下角屏幕失灵自动点击怎么解决_魅族2程序自动返回退出的原因...

    类型:手机主题大小:5.0M语言:中文 评分:5.0 标签: 立即下载 先说说这个问题是怎么来的.可以肯定的是魅族2左下角屏幕失灵绝对不是机子硬件问题,换屏幕什么的你就去找坑吧!很简单就能解决的问题, ...

最新文章

  1. 资源 | Hinton、LeCun、吴恩达......不容错过的15大机器学习课程都在这儿了
  2. 苹果M1芯片升级果然很炸场:性能暴涨功耗速降!但最香新品竟是无降噪AirPods 3...
  3. YonBuilder直播预约第七期 | 一场直播带你走近规则链
  4. TCP/IP面试常问合集,JavaWeb内容及HTTP协议
  5. 直接定址表---汇编学习笔记
  6. 一个简单的python日志服务器
  7. 中国海洋大学计算机考研指导
  8. c# 定义委托和使用委托(事件的使用)
  9. 物料移动类型和后勤自动科目设置-SAP屠夫
  10. 免费报表工具 - RDP报表工具
  11. Win10如何下载安装Java,配置环境变量,并顺利的使用系统发育树编辑软件figtree,需要java环境的软件都可依此教程下载安装配置
  12. 超级详细的pytest测试和allure测试报告
  13. asp big5 gb2312 转 Unicode
  14. win10系统找不到telnet服务器,win10系统找不到Telnet服务的技巧介绍
  15. 如何免ROOT,实现安卓设备远程控制?
  16. 自动驾驶测试中的场景构建
  17. 去法国,买哪些伴手礼既有面子又不破费
  18. 关于支付账户体系研究
  19. a15相当于骁龙多少 A15相当于骁龙什么处理器
  20. WebView交互架构项目实战(二),张孝祥java基础视频教程

热门文章

  1. 《纽约时报》如何打造新一代推荐系统
  2. 物业小区高校水电抄表充值管理系统
  3. 新手必学 最完整的iTunes使用教程
  4. 基于linux5.15.5的IMX 参考手册 --- 10
  5. 机器人水库涵洞检测_水下机器人(ROV)在水库大坝检测作业的安全分析
  6. 基于stm32单片机智能导盲拐杖源程序Proteus仿真设计
  7. Linux命令行压缩图片,并更改尺寸
  8. Android Qcom Audio架构学习
  9. 拉丁超立方体抽样(LHS)研究(Matlab代码实现)
  10. c语言答案复旦大学,复旦大学《计算机图形学》课后习题答案_1.doc