Java实现对话窗口消息的自动粘贴、发送
局限性:
刚开始想做一个能自动打开和某个QQ好友的对话框,并且自动进行消息轰炸的程序,但是自己摸索了一会,也上网查找了一些资料,发现想要自动打开一个QQ对话框是很困难的事情
- 很难自动调出某个QQ或微信好友的对话框
- 进行消息发送前,必须点击聊天框,保证光标在聊天框内闪烁
- 发送频率不能过高,过高会引起QQ检测从而禁止发送消息;并且过高的频率也很难实现消息的顺序发送
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;
import java.util.Scanner;
/**
* @author: kid
* @creatAt:2021/5/1 8:41
*/
public class MessageSent
{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
try {
Robot robot = new Robot();
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
System.out.println("请输入需要重复发送的内容:");
String msg = scan.nextLine();
System.out.println("请输入每条内容发送的时间间隔(ms):(>=30ms)");
int period = scan.nextInt();
if(period<30)
{
System.err.println("不合法的时间间隔!");
System.exit(-1);
}
robot.delay(3000); //推迟3秒,便于打开对话窗口,实现消息的复制粘贴
//因剪贴板中的内容不一定为String,故需要实现Transferable接口,保证该内容能够转化为String,所以使用了StringSelection
for(int i=0;i<1000;i++){
StringSelection stringSelection = new StringSelection(msg+(i+1)); //将msg字符串作为StringSelect的内容,StringSelect实现了Transferable接口
clip.setContents(stringSelection,null); //函数原型:setContents(Transferable contents, ClipboardOwner owner)
robot.keyPress(KeyEvent.VK_CONTROL); //模拟按下control键
robot.keyPress(KeyEvent.VK_V); //模拟按下v键
robot.keyRelease(KeyEvent.VK_CONTROL); //模拟松开control键
robot.keyRelease(KeyEvent.VK_V); //模拟松开v键
robot.keyPress(KeyEvent.VK_ENTER); //模拟按下enter键
robot.delay(period);
robot.keyRelease(KeyEvent.VK_ENTER); //模拟松下enter键
}
} catch (AWTException e) {
e.printStackTrace();
}
}
}