1. 程式人生 > >vbs指令碼實現qq定時發訊息(初級)

vbs指令碼實現qq定時發訊息(初級)

vbs指令碼實現QQ訊息定時傳送

目標

批處理又稱為批處理指令碼,強大的強大功能可以高效得實現很多功能,例如批量更改檔案格式,批量進行檔案讀寫,今天我們的目標是用vbs指令碼編寫可以傳送qq訊息的指令碼,並利用c++程式,實現qq訊息的定時自動傳送

準備

  • 記事本

    vbs指令碼不需要什麼花裡花哨的東西,記事本足矣

  • c++編譯器

    隨便選一個就行

開工

  • 編寫vbs指令碼

    VBS是基於Visual Basic的指令碼語言,功能還是很強的,當然我也只會一點點皮毛,因為工作需要,去學習瞭如何寫傳送QQ訊息的指令碼~

新建一個空的記事本

鍵入如下程式碼

On Error Resume Next

str="這裡是你想說的話str1"

Set Wshshell=WScript.CreateObject("WScript.Shell")

WshShell.run"mshta vbscript:clipboardData.SetData("+""""+"text"+""""+","+""""&str&""""+")(close)",0,true

WshShell.run"這裡是你要傳送到對方QQ的快捷方式str2"

WScript.Sleep 1000

WshShell.SendKeys"^v"

WScript.Sleep 1000

WshShell.SendKeys "%s"

WScript.Sleep 1000

WshShell.SendKeys"%{F4}"
  • 程式碼略講

    第一行的On E...是vbs指令碼在處理執行時錯誤時繼續執行,而不是退出
    第二行str1為你想傳送的訊息,可以自己隨便定義
    3行建立一個操作物件,4行講str1的內容複製到剪貼簿
    重點是第5行,獲得快捷方式str2。

    開啟QQ好友列表

    找到你想要發訊息的人,開啟和Ta的聊天視窗

    右鍵那3個點

    生成聊天快捷方式到桌面

    右鍵桌面的快捷方式

    選擇屬性

    複製

    目標處的一行字串

好了,str2已經獲得,把str1和str2都填上,就是這種樣子

Sleep是暫停時間,1000為一秒,
Sendkeys為模擬鍵盤輸入,所以,這個指令碼的執行邏輯就是把指定字串複製到剪貼簿,然後開啟對方的qq介面,進行Ctrl+V複製,ALT+S傳送,以及Alt+F4退出操作,行雲流水

  • c++程式定時vbs指令碼

    首先要知道一點,windows系統自帶了定時任務,也就是你可以通過設定,讓電腦定時執行一些程式或者指令碼,當然我們這裡使用system執行cmd命令來實現

先貼上一個定時命令schtasks的具體使用部落格傳送門,看完以後你大概昏頭了,我也是看了很久把裡面基礎的東西提取出來。。
關鍵程式碼一行
schtasks /create /tn 任務名str1 /tr vbs指令碼路徑str2 /sc once /st 啟動時間str3 sd/ 啟動日期str2
值得注意的是,最好任務名,路徑,指令碼名都不要用中文,否則容易出bug,我給出一行示例
schtasks /create /tn supertask_Downa /tr C://Users/ddk24/Desktop/tutor/inform_Down.vbs /sc once /st 20:32:00 /sd 2018/12/16
程式作用在18年12月16日的20點32分00秒執行一次在那個路徑下的ifform_Down.vbs指令碼,任務名為supertask_Downa(注意!!只執行一次)
完整程式

#include<iostream>
#include<string>
using namespace std;
string a = "schtasks /create /tn supertask_";//任務名,注意多個任務不能由任務名相同的
string b = "tr C://Users/ddk24/Desktop/tutor/inform_";//vbs路徑名
string c = ".vbs";
string d = " /sc once /st ";
string e = ":00 /sd ";
string f = " /";
int main() {
    char ch = 'a';
    string cmd;
    string name = "Name_VBS";
    string time_ = "20:30";
    string date = "2018/12/15";
    cmd = a + ch + f + b + name + c + d + time_ + e + date;
    cout << cmd << endl;
    char Cmd[300];
    int i = 0;
    for (i; i < cmd.size(); i++) {
        Cmd[i] = cmd[i];
    }
    Cmd[i] = '\0';
    system(Cmd);
    system("pause");
    return 0;
}

後記

vbs的功能很強,我只會一點點,這個程式只能生成一次性的,雖然我這裡也有可以刪除任務的程式碼和每天啟動的程式碼,但是不熟的話設定成功以後關不掉就會很麻煩,所有先玩這個吧,通過程式,你可以設定一個string陣列,弄個一個月的時間(括弧笑),然後給自己設定指令碼:小號發給自己提醒英語背單詞的訊息,哈哈。不過定時執行需要電腦時刻保持執行,有這個需求的可以再網上找相關東西
2018/12/16 22:59:59