1. 程式人生 > >C語言實現一個自動刷彈幕的程式

C語言實現一個自動刷彈幕的程式

本文使用兩種方式來進行刷彈幕操作
1 模擬鍵盤輸入,自動輸入文字,然後點選回車。
2 操作剪下板,直接將剪下板的文字貼上到輸入框,然後回車。

模擬鍵盤輸入

如果要輸入“彈幕”這兩個漢字,一般來說,我們需要分別輸入d a n m u 這五個個字母之後,然後按下空格,然後回車。
在windows系統中,模擬鍵盤輸入的系統呼叫函式是keybd_event();
如何所示的程式,將檔案中的文字一行一行讀入到陣列中,然後根據文字中的字母來模擬鍵盤的輸入,每輸入完一行就輸入一個空格和一個回車。bilibili.txt中的文字應該是要輸入的彈幕的拼音

hahahahahaha
shuadanmuchegnxu
shuadanmuchengxu
#include <stdio.h>
#include <windows.h>
#include <string.h>

#define BILIBILIFILE "C://bilibili.txt"
void SendFile()
{
    FILE *fp = NULL;
    char buf[1024];
    fp = fopen(BILIBILIFILE, "r");
    while (fgets(buf, 1024, fp)) {
        for (int i = 0; i < strlen(buf); ++i) {
            if
(buf[i] >= 'a' && buf[i] <= 'z') { keybd_event(buf[i] + 'A' - 'a', 0, 0, 0); keybd_event(buf[i] + 'A' - 'a', 0, KEYEVENTF_KEYUP, 0); } else if (buf[i] >= 'A' && buf[i] <= 'Z') { keybd_event(buf[i], 0, 0, 0); keybd_event(buf[i], 0
, KEYEVENTF_KEYUP, 0); } } keybd_event(VK_SPACE, 0, 0, 0); keybd_event(VK_SPACE, 0, KEYEVENTF_KEYUP, 0); Sleep(100); keybd_event(VK_RETURN, 0, 0, 0); keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); } fclose(fp); } int main() { while (1) { SendFile(); Sleep(500); continue; }

操作剪下板

操作剪下板則需要將預先準備好的文字,複製到剪下板,然後按寫ctrl + v 這樣就能把文貼上到輸入框。
bilibili.txt中的文字應該是要輸入的彈幕

哈哈哈哈
刷彈幕程式
刷彈幕程式
#include <stdio.h>
#include <windows.h>
#include <string.h>

#define BILIBILIFILE "C://bilibili.txt"

//將pszData中的資料複製到剪下板
BOOL CopyToClipboard(const char* pszData, const int nDataLen)
{
    if (::OpenClipboard(NULL))
    {
        ::EmptyClipboard();
        HGLOBAL clipbuffer;
        char *buffer;
        clipbuffer = ::GlobalAlloc(GMEM_DDESHARE, nDataLen + 1);
        buffer = (char *)::GlobalLock(clipbuffer);
        strcpy(buffer, pszData);
        ::GlobalUnlock(clipbuffer);
        ::SetClipboardData(CF_TEXT, clipbuffer);
        ::CloseClipboard();
        return TRUE;
    }
    return FALSE;
}
//按行讀取檔案,將每行的資料複製到剪下板,按行按寫ctrl+v貼上,回車輸入
void SendFile()
{
    FILE *fp = NULL;
    char buf[1024];
    fp = fopen(BILIBILIFILE, "r");
    while (fgets(buf, 1024, fp)) {
        CopyToClipboard(buf, strlen(buf));
        keybd_event(VK_CONTROL, 0, 0, 0);
        keybd_event('V', 0, 0, 0);
        keybd_event('V', 0, KEYEVENTF_KEYUP, 0);
        keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
        keybd_event(VK_RETURN, 0, 0, 0);
        keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0);
        memset(buf, 0x00, 1024);
    }
}
int main()
{
    while (1) {
        SendFile();
        Sleep(500);
        continue;
}