Java实现自动给微信好友群组发送消息
- 引入依赖
<dependencies>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna</artifactId>
<version>5.5.0</version>
</dependency>
<dependency>
<groupId>net.java.dev.jna</groupId>
<artifactId>jna-platform</artifactId>
<version>5.5.0</version>
</dependency>
</dependencies>
- 代码
package com.xf;
import com.sun.jna.platform.win32.User32;
import com.sun.jna.platform.win32.WinDef;
import java.awt.*;
import java.awt.datatransfer.*;
import java.awt.event.KeyEvent;
import java.util.concurrent.TimeUnit;
public class RobotUtil {
private static Robot robot;
private static Clipboard clip;
private static Toolkit kit;
public static void main(String[] args) throws AWTException, InterruptedException {
if (topWeChat()) {
init();
queryItemForSendMessage("盖于谷山上");
for (int i = 0; i < 300; i++) {
TimeUnit.SECONDS.sleep(5);
sendStrMessage("姐姐");
}
}
}
public static boolean topWeChat() {
boolean flag = true;
WinDef.HWND hwnd = User32.INSTANCE.FindWindow(null, "微信");
if (hwnd == null) {
flag = false;
System.out.println("not running");
} else {
User32.INSTANCE.ShowWindow(hwnd, 9);
User32.INSTANCE.SetForegroundWindow(hwnd);
}
return flag;
}
private static void init() {
try {
robot = new Robot();
} catch (AWTException e) {
robot = null;
e.printStackTrace();
}
kit = Toolkit.getDefaultToolkit();
clip = kit.getSystemClipboard();
}
public static void queryItemForSendMessage(String itemName) {
if (robot == null) {
return;
}
robot.delay(2000);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_F);
robot.keyRelease(KeyEvent.VK_CONTROL);
Transferable tText = new StringSelection(itemName);
clip.setContents(tText, null);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(2000);
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(1000);
}
public static void sendStrMessage(String message) {
if (robot == null) {
return;
}
Transferable tText = new StringSelection(message);
clip.setContents(tText, null);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(1000);
}
public static void sendImgMessage(String imgPath) {
if (robot == null) {
return;
}
Transferable tImg = new ImageSelection(kit.getImage(imgPath));
clip.setContents(tImg, null);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.delay(1000);
}
}
class ImageSelection implements Transferable {
private Image image;
public ImageSelection(Image image) {
this.image = image;
}
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[] {DataFlavor.imageFlavor};
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
return DataFlavor.imageFlavor.equals(flavor);
}
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
if (!DataFlavor.imageFlavor.equals(flavor)) {
throw new UnsupportedFlavorException(flavor);
}
return image;
}
}