Window向指定QQ客戶端窗口發送消息

鍵盤上0~9的ASCII 

    public static final int VK_0              = 0x30;
    public static final int VK_1              = 0x31;
    public static final int VK_2              = 0x32;
    public static final int VK_3              = 0x33;
    public static final int VK_4              = 0x34;
    public static final int VK_5              = 0x35;
    public static final int VK_6              = 0x36;
    public static final int VK_7              = 0x37;
    public static final int VK_8              = 0x38;
    public static final int VK_9              = 0x39;

鍵盤上A~Z的ASCII  

    public static final int VK_A              = 0x41;
    public static final int VK_B              = 0x42;
    public static final int VK_C              = 0x43;
    public static final int VK_D              = 0x44;
    public static final int VK_E              = 0x45;
    public static final int VK_F              = 0x46;
    public static final int VK_G              = 0x47;
    public static final int VK_H              = 0x48;
    public static final int VK_I              = 0x49;
    public static final int VK_J              = 0x4A;
    public static final int VK_K              = 0x4B;
    public static final int VK_L              = 0x4C;
    public static final int VK_M              = 0x4D;
    public static final int VK_N              = 0x4E;
    public static final int VK_O              = 0x4F;
    public static final int VK_P              = 0x50;
    public static final int VK_Q              = 0x51;
    public static final int VK_R              = 0x52;
    public static final int VK_S              = 0x53;
    public static final int VK_T              = 0x54;
    public static final int VK_U              = 0x55;
    public static final int VK_V              = 0x56;
    public static final int VK_W              = 0x57;
    public static final int VK_X              = 0x58;
    public static final int VK_Y              = 0x59;
    public static final int VK_Z              = 0x5A;

 實現發送消息邏輯

public class SendQQMessage {


    Clipboard clipboard;

    public SendQQMessage(Clipboard clipboard) {
        this.clipboard = clipboard;
    }

    public void sendQQMessage(Robot robot, String QQ, String message) throws InterruptedException, IOException {

        //強行聊天的代碼:tencent://Message/?Uin=919433667&websiteName=www.oicqzone.com&Menu=yes
        //強行加好友的代碼:tencent://AddContact/fromId=45&fromSubId=1&subcmd=all&uin=574201314&fuin=919433667&website=www.oicqzone.com
        // String url = "http://wpa.qq.com/msgrd?v=3&uin=\""+QQ+"\"&site=qq&menu=yes";
        String url = "tencent://message/?uin=" + QQ + "&Site=null&Menu=yes";//彈出對應的QQ聊天窗口
        String cmd = "explorer \"" + url + "\"";
        Process process = null;
        try {
            process = Runtime.getRuntime().exec(cmd);
            // 等待程序執行結束並輸出狀態
            process.waitFor();
            //延遲2秒等待聊天框開啓
            //延遲二秒,主要是爲了預留出打開窗口的時間,括號內的單位爲毫秒
            robot.delay(1500);//
            //如果速度參數想要追求極限<50將
            //這兩行代碼註釋,默認從剪切板重複發送消息,次數爲出師表分割後的長度
            clipboard.setContents(new StringSelection(message), null);
            // 以下兩行按下了ctrl+v,完成粘貼功能
            robot.keyPress(KeyEvent.VK_CONTROL);
            robot.keyPress(KeyEvent.VK_V);
            // 釋放ctrl按鍵,像ctrl,退格鍵,刪除鍵這樣的功能性按鍵,在按下後一定要釋放,不然會出問題。crtl如果按住沒有釋放,
            // 在按其他字母按鍵是,敲出來的回事ctrl的快捷鍵。
            robot.keyRelease(KeyEvent.VK_CONTROL);
            // 延遲一秒再發送,不然會一次性全發佈出去,因爲電腦的處理速度很快,每次粘貼發送的速度幾乎是一瞬間,所以給人的感覺就是一次性發送了全部。
            // 這個時間可以自己改,想幾秒發送一條都可以
            robot.delay(500);
            robot.keyPress(KeyEvent.VK_ENTER);// 回車
        } catch (IOException e) {
            System.out.println("請重新運行程序");
        } finally {
            assert process != null;
            process.getErrorStream().close();
            process.getInputStream().close();
            process.getOutputStream().close();
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章