JavaWindows调用Typora把md文件转成html并带上css样式,理论上可以调用任何exe程序
Posted xiaostudy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWindows调用Typora把md文件转成html并带上css样式,理论上可以调用任何exe程序相关的知识,希望对你有一定的参考价值。
1、利用移动鼠标模拟用户点击功能,可使用任何程序
1 package com.xiaostudy.server; 2 3 import java.awt.*; 4 import java.awt.datatransfer.StringSelection; 5 import java.awt.event.InputEvent; 6 import java.awt.event.KeyEvent; 7 import java.io.File; 8 import java.io.IOException; 9 10 public class MyTest { 11 12 public static void main(String[] args) throws IOException { 13 test1(); 14 } 15 16 private static void test1() { 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 = new File(htmlPath); 22 boolean htmlExist = htmlFile.exists(); 23 // 执行命令返回执行的子进程对象 24 Runtime.getRuntime().exec(command); 25 // 休息0.5秒钟 26 Thread.currentThread().sleep(500); 27 28 Robot robot = new Robot(); 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 = new StringSelection(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 package com.xiaostudy.server; 2 3 import java.awt.*; 4 import java.awt.datatransfer.StringSelection; 5 import java.awt.event.KeyEvent; 6 import java.io.File; 7 8 public class MyTest { 9 10 public static void main(String[] args) { 11 test2(); 12 } 13 14 private static void test2() { 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 = new File(htmlPath); 20 boolean htmlExist = htmlFile.exists(); 21 // 执行命令返回执行的子进程对象 22 Runtime.getRuntime().exec(command); 23 // 休息5秒钟 24 Thread.currentThread().sleep(500); 25 26 Robot robot = new Robot(); 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 = new StringSelection(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 }
然后关闭Typora再重新打开,就可以看到快捷键了
以上是关于JavaWindows调用Typora把md文件转成html并带上css样式,理论上可以调用任何exe程序的主要内容,如果未能解决你的问题,请参考以下文章