首先呢! 我是经常将学习笔记记录在Typora中,然后呢,找个时间将笔记统一发布到csdn博客中,一是为了养成一种写笔记的习惯,二是为了保存自己的笔记,防止放在本地电脑,出现什么意外,然后笔记就不见了(好吧,我承认我遇到过这样的事情,所以才下定决心做这个事情)
说完了这一大堆具体讲讲怎么做
因为我是主学java的就像这怎么用Java来做这件事情.
首先附上源码
autoUp.java
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class autoUp {
public static void main(String[] args) {
JFrame j = new JFrame("csdn半自动图片上传工具");
j.setLayout(new FlowLayout());
//1、事件源jb按钮就是事件源,因为要点击它
JButton jb = new JButton("1开始)]");
JButton ja = new JButton("2开始)");
//2、事件处理程序ClickAction表示事件处理程序
ClickActionB b = new ClickActionB();
ClickActionA a = new ClickActionA();
//3、关联,将事件源和事件处理程序a关联起来,意思是发生点击执行a
jb.addActionListener(b);
ja.addActionListener(a);
//将jb源事件添加到窗口中。
j.add(jb,BorderLayout.WEST);
j.add(ja,BorderLayout.EAST);
j.getContentPane().add(jb);
j.getContentPane().add(ja);
j.pack();
j.setVisible(true);
}
}
//事件处理程序,点击就是一个Action事件
class ClickActionB implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
select select = new select();
try {
select.toSelectB();
} catch (AWTException ex) {
ex.printStackTrace();
}
}
}
class ClickActionA implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
select select = new select();
try {
select.toSelectA();
} catch (AWTException ex) {
ex.printStackTrace();
}
}
}
select.java
import java.awt.*;
import java.awt.event.KeyEvent;
public class select {
public void toSelectB() throws AWTException {
Robot robot = new Robot();
robot.delay(1000);
//1.按下LEFT 光标向左移动两格
downUpUtil.toUseKey(KeyEvent.VK_LEFT);
downUpUtil.toUseKey(KeyEvent.VK_LEFT);
//2.按住 SHIFT+Ctrl 再加上 三次LEFT ---选中图片
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_CONTROL);
downUpUtil.toUseKey(KeyEvent.VK_LEFT);
downUpUtil.toUseKey(KeyEvent.VK_LEFT);
downUpUtil.toUseKey(KeyEvent.VK_LEFT);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.keyRelease(KeyEvent.VK_CONTROL);
//3.ctrl+C 复制图片
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_C);
robot.delay(100);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_C);
//4.按住CTRL+四次RIGHT 跳转到行尾
robot.keyPress(KeyEvent.VK_CONTROL);
for (int i = 0; i < 4; i++) {
robot.keyPress(KeyEvent.VK_RIGHT);
robot.keyRelease(KeyEvent.VK_RIGHT);
}
robot.keyRelease(KeyEvent.VK_CONTROL);
//5.按住SHIFT+CTRL 加上12次LEFT
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_SHIFT);
for (int i = 0; i < 12; i++) {
downUpUtil.toUseKey(KeyEvent.VK_LEFT);
}
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.delay(100);
//------------------------我是一条分割线-----------------------------
//6.移动到图片上传并且点击
downUpUtil.toMoveMouse();
//7.将图片名粘贴 ctrl+v
robot.delay(1000);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.delay(10);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_V);
//8.按下 ALT+O 打开图片--结束
robot.delay(200);
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_O);
robot.delay(100);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_O);
}
public void toSelectA() throws AWTException {
Robot robot = new Robot();
robot.delay(1000);
//1.按下LEFT 光标向左移动一格
downUpUtil.toUseKey(KeyEvent.VK_LEFT);
//2.按住 SHIFT+Ctrl 再加上 三次LEFT ---选中图片
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_CONTROL);
downUpUtil.toUseKey(KeyEvent.VK_LEFT);
downUpUtil.toUseKey(KeyEvent.VK_LEFT);
downUpUtil.toUseKey(KeyEvent.VK_LEFT);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.keyRelease(KeyEvent.VK_CONTROL);
//3.ctrl+C 复制图片
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_C);
robot.delay(100);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_C);
//4.按住CTRL+四次RIGHT 跳转到行尾
robot.keyPress(KeyEvent.VK_CONTROL);
for (int i = 0; i < 4; i++) {
robot.keyPress(KeyEvent.VK_RIGHT);
robot.keyRelease(KeyEvent.VK_RIGHT);
}
robot.keyRelease(KeyEvent.VK_CONTROL);
//5.按住SHIFT+CTRL 加上12次LEFT
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_SHIFT);
for (int i = 0; i < 13; i++) {
downUpUtil.toUseKey(KeyEvent.VK_LEFT);
}
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.delay(100);
//------------------------我是一条分割线-----------------------------
//6.移动到图片上传并且点击
downUpUtil.toMoveMouse();
//7.将图片名粘贴 ctrl+v
robot.delay(1000);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.delay(10);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_V);
//8.按下 ALT+O 打开图片--结束
robot.delay(200);
robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_O);
robot.delay(100);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_O);
}
}
downUpUtil.java
import java.awt.*;
import java.awt.event.InputEvent;
public class downUpUtil {
public static void toUseKey(int keycode) throws AWTException {
Robot robot = new Robot();
robot.keyPress(keycode);
robot.delay(50);
robot.keyRelease(keycode);
robot.delay(50);
}
public static void toMoveMouse() throws AWTException {
Robot robot = new Robot();
robot.mouseMove(580,180);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
//8.移动鼠标到屏幕中央点击"上传图片"按钮
robot.delay(100);
robot.mouseMove(683,360);
robot.delay(1000);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
}
}
一共三个类,其实很简单主要是用了java 的一个类 Robot 机器人类,模拟真实的人的动作来操作.
操作方法:
-
首先手动操作一遍(目的是让电脑记住图片存放的位置以便于之后的自动操作)
-
将光标放在最后一行的末尾,
-
- 第一种 )]
- 第一种 )]
-
第二种 )
可以看到结尾有两种形式,第一种是之前Typora转存的形式
第二种应该是更新之后的形式,两种不一样我已分别做了两个按钮根据情况不同选择对应的按钮 -
然后切换到程序按钮界面,按下开始键,
-
迅速切换到博客界面(博客界面最大化)之后程序自动操作一次,
-具体的过程是
- 程序自动复制图片名称
2. 然后选中所有文字
3. 鼠标自动定位到图片按钮
4. 点击之后自动点击"选择图片"
5. 自动将图片名称粘贴到文件名中,然后自动点击打开
6.图片就上传成功了
- 然后重复执行放光标,切换界面,按开始键,再切换界面.
最后,我这个是半自动的程序,必须手动将光标放在三行文字的最后一行的末尾,而且这个是我转存之后文字的数量是这样,如果和我的有区别还需要更改代码让光标移动的次数改变,我写的这个代码我的是好用了,具体到每个人可能有差别.这个就你们自己探索了或者评论找我.
有没有大佬知道如何让光标自动识别到指定的字符"]"之后然后停下来,如果这个能够做到,就真的是全自动的了.嘻嘻QAQ.
希望有大佬提提意见!!!
如果有需要这个程序的jar包的,评论联系我 ,发给你QAQ
看到最后的帮忙点个赞👍🙏 谢谢,这个对我真的很重要!
