大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > C技巧 > 使用C语言实现一个自动刷弹幕的程序

使用C语言实现一个自动刷弹幕的程序

关键词:语言程序弹幕  阅读(583) 赞(16)

[摘要]本文是对使用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;
}


相关评论