1、利用移动鼠标模拟用户点击功能,可使用任何程序
1 packagecom.xiaostudy.server; 2 3 import java.awt.*; 4 importjava.awt.datatransfer.StringSelection; 5 importjava.awt.event.InputEvent; 6 importjava.awt.event.KeyEvent; 7 importjava.io.File; 8 importjava.io.IOException; 9 10 public classMyTest { 11 12 public static void main(String[] args) throwsIOException { 13 test1(); 14 } 15 16 private static voidtest1() { 17 18 try{ 19 String command = "D:/Program Files/Typora/Typora.exe D:/test/md2html/1.md"; 20 String htmlPath = "D:/test/md2html/1.html"; 21 File htmlFile = newFile(htmlPath); 22 boolean htmlExist =htmlFile.exists(); 23 //执行命令返回执行的子进程对象 24 Runtime.getRuntime().exec(command); 25 //休息0.5秒钟 26 Thread.currentThread().sleep(500); 27 28 Robot robot = newRobot(); 29 //设置Robot产生一个动作后的休眠时间,否则执行过快 30 robot.setAutoDelay(150); 31 32 //最大化窗口,让程序满屏,起点在0,0 33 robot.keyPress(KeyEvent.VK_WINDOWS); 34 robot.keyPress(KeyEvent.VK_UP); 35 robot.keyRelease(KeyEvent.VK_UP); 36 robot.keyRelease(KeyEvent.VK_WINDOWS); 37 38 //程序距离0,0位置,最大化时就是0偏移 39 int x = 0; 40 int y = 0; 41 42 //快捷键:文件(安心Alt+F键然后松开) 43 robot.keyPress(KeyEvent.VK_ALT); 44 robot.keyPress(KeyEvent.VK_F); 45 robot.keyRelease(KeyEvent.VK_F); 46 robot.keyRelease(KeyEvent.VK_ALT); 47 48 //第一个移动鼠标是让鼠标回到0,0点,第二个移动鼠标到(导出) 49 robot.mouseMove(-1, -1); 50 robot.mouseMove(23+x, 450+y); 51 //点击鼠标左键,然后松开 52 System.out.println("鼠标左键"); 53 robot.mousePress(InputEvent.BUTTON1_MASK); 54 robot.mouseRelease(InputEvent.BUTTON1_MASK); 55 56 //鼠标移动到HTML 57 robot.mouseMove(-1, -1); 58 robot.mouseMove(300+x, 475+y); 59 //点击鼠标左键,然后松开 60 System.out.println("鼠标左键"); 61 robot.mousePress(InputEvent.BUTTON1_MASK); 62 robot.mouseRelease(InputEvent.BUTTON1_MASK); 63 64 //选择保存到具体位置 65 //复制 66 //声明一个StingSelection 对象,并使用String的参数完成实例化; 67 StringSelection stringSelection = newStringSelection(htmlFile.getAbsolutePath()); 68 //使用Toolkit对象的setContents将字符串放到粘贴板中 ; 69 Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null); 70 //粘贴 71 robot.keyPress(KeyEvent.VK_CONTROL); 72 robot.keyPress(KeyEvent.VK_V); 73 robot.keyRelease(KeyEvent.VK_V); 74 robot.keyRelease(KeyEvent.VK_CONTROL); 75 //回车 76 robot.keyPress(KeyEvent.VK_ENTER); 77 robot.keyRelease(KeyEvent.VK_ENTER); 78 79 if(htmlExist) { 80 //保存覆盖 81 robot.keyPress(KeyEvent.VK_Y); 82 robot.keyRelease(KeyEvent.VK_Y); 83 } 84 //关闭 85 robot.keyPress(KeyEvent.VK_CONTROL); 86 robot.keyPress(KeyEvent.VK_W); 87 robot.keyRelease(KeyEvent.VK_W); 88 robot.keyRelease(KeyEvent.VK_CONTROL); 89 90 } catch(Exception ex) { 91 ex.printStackTrace(); 92 } finally{ 93 } 94 } 95 96 }
下面动图执行程序后鼠标是程序调用,直到程序关闭后,打开html文件是手动的。
2、全程使用快捷键,不用移动鼠标,但是要设置导出HTML的快捷键
文件->偏好设置->通过->打开高级设置->打开conf.user.json文件
"HTML":"Ctrl+Alt+E"
1 packagecom.xiaostudy.server; 2 3 import java.awt.*; 4 importjava.awt.datatransfer.StringSelection; 5 importjava.awt.event.KeyEvent; 6 importjava.io.File; 7 8 public classMyTest { 9 10 public static voidmain(String[] args) { 11 test2(); 12 } 13 14 private static voidtest2() { 15 16 try{ 17 String command = "D:/Program Files/Typora/Typora.exe D:/test/md2html/1.md"; 18 String htmlPath = "D:/test/md2html/1.html"; 19 File htmlFile = newFile(htmlPath); 20 boolean htmlExist =htmlFile.exists(); 21 //执行命令返回执行的子进程对象 22 Runtime.getRuntime().exec(command); 23 //休息5秒钟 24 Thread.currentThread().sleep(500); 25 26 Robot robot = newRobot(); 27 //设置Robot产生一个动作后的休眠时间,否则执行过快 28 robot.setAutoDelay(150); 29 30 //刚设置好的快捷键,导出->HTML(Ctrl+Alt+E) 31 robot.keyPress(KeyEvent.VK_CONTROL); 32 robot.keyPress(KeyEvent.VK_ALT); 33 robot.keyPress(KeyEvent.VK_E); 34 robot.keyRelease(KeyEvent.VK_E); 35 robot.keyRelease(KeyEvent.VK_ALT); 36 robot.keyRelease(KeyEvent.VK_CONTROL); 37 38 //复制 39 //声明一个StingSelection 对象,并使用String的参数完成实例化; 40 StringSelection stringSelection = newStringSelection(htmlFile.getAbsolutePath()); 41 //使用Toolkit对象的setContents将字符串放到粘贴板中 ; 42 Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null); 43 44 //粘贴 45 robot.keyPress(KeyEvent.VK_CONTROL); 46 robot.keyPress(KeyEvent.VK_V); 47 robot.keyRelease(KeyEvent.VK_V); 48 robot.keyRelease(KeyEvent.VK_CONTROL); 49 //回车 50 robot.keyPress(KeyEvent.VK_ENTER); 51 robot.keyRelease(KeyEvent.VK_ENTER); 52 53 if(htmlExist) { 54 //保存覆盖 55 robot.keyPress(KeyEvent.VK_Y); 56 robot.keyRelease(KeyEvent.VK_Y); 57 } 58 59 //关闭 60 robot.keyPress(KeyEvent.VK_CONTROL); 61 robot.keyPress(KeyEvent.VK_W); 62 robot.keyRelease(KeyEvent.VK_W); 63 robot.keyRelease(KeyEvent.VK_CONTROL); 64 65 } catch(Exception ex) { 66 ex.printStackTrace(); 67 } finally{ 68 } 69 } 70 71 }