敲着玩一玩,自己在写发文字的时候就想能不能发送其他格式的文件,就找了找资料。没错,成功了。运行之后,把光标移到输入框,按下Ctrl+V+Enter。
这个代码只能选一个,然后连续发。
方法一、代码如下:方法二、代码如下:
package com.lyw.daily; import javax.imageio.ImageIO; import java.awt.*; import java.awt.datatransfer.*; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; import java.io.*; /** * 自动无限发图片 */ public class QqSendImage2 { public static void main(String[] args) { try { //机器类实现电脑自动 Robot robot = new Robot(); //Clipboard:实现使用剪切/复制/粘贴操作传输数据的机制的类。 //getDefaultToolkit():获取默认工具包。 //getSystemClipboard():获取与本地平台提供的剪贴板工具接口的系统剪贴板的单例实例。 Clipboard systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); //delay(int ms)睡眠在指定的时间。为了有时间让光标指向QQ\微信等输入框 //有六秒钟时间把光标移到QQ输入框,按下Ctrl+V+Enter robot.delay(3000); // File file = new File("practise\\studyjava.jpg"); // FileInputStream fis = new FileInputStream(new File("practise\\studyjava.jpg")); BufferedInputStream br = new BufferedInputStream(new FileInputStream(new File("practise\\loveyou.jpg"))); // BufferedImage bi = ImageIO.read(br); Image image = (Image) ImageIO.read(br); Transferable tImg = new Selection(image); //设置发送图片的次数 for (int i = 0; i < 100; i++) { systemClipboard.setContents(tImg, null); robot.keyPress(KeyEvent.VK_CONTROL); robot.keyPress(KeyEvent.VK_V); robot.keyRelease(KeyEvent.VK_CONTROL); robot.keyRelease(KeyEvent.VK_V); robot.keyPress(KeyEvent.VK_ENTER); robot.keyRelease(KeyEvent.VK_ENTER); robot.delay(500); } } catch (Exception e) { } } static class Selection implements Transferable { private Image image; public Selection(Image image) { this.image = image; } @Override public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[]{DataFlavor.imageFlavor}; } @Override public boolean isDataFlavorSupported(DataFlavor flavor) { return DataFlavor.imageFlavor.equals(flavor); } @Override public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException { if (!DataFlavor.imageFlavor.equals(flavor)) { throw new UnsupportedFlavorException(flavor); } return image; } } }
在搞发送文字时,查api发现Toolkit类中有能获取图片的方法 。
getImage(String filename)
返回从指定文件获取像素数据的图像,其格式可以是GIF,JPEG或PNG。
就试着写了一下。
能运行成功,发出图片,但会报错。
package com.lyw.daily;
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.event.KeyEvent;
import java.io.*;
public class QqSendImage {
public static void main(String[] args) {
try {
Robot robot = new Robot();
Clipboard systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
robot.delay(5000);
Image image = Toolkit.getDefaultToolkit().getImage("practise\\studyjava.jpg");
Transferable selection = new Selection(image);
for (int i = 0; i < 100; i++) {
systemClipboard.setContents(selection, null);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_V);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.delay(500);
}
} catch (Exception e) {
}
}
static class Selection implements Transferable {
private Image image;
public Selection(Image image) {
this.image = image;
}
@Override
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[]{DataFlavor.imageFlavor};
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor) {
return DataFlavor.imageFlavor.equals(flavor);
}
@Override
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
if (!DataFlavor.imageFlavor.equals(flavor)) {
throw new UnsupportedFlavorException(flavor);
}
return image;
}
}
}