vlambda博客
学习文章列表

C语言编写发送弹幕神器

最任性的

C语言发送弹幕


01

背景

 现在我们看视频,比如在B站学习,或者爱奇艺,等等视频,看到想吐槽的时候不免想发送弹幕来抒发一下此时此刻的心情,而且,有的人看视频的时候,就喜欢看别人发送的弹幕,可以说,弹幕已经是目前比较流行的网络媒体文化。

那我们想要让电脑自己实现发送弹幕的功能,需要怎么做呢?


02

思路

C语言编写发送弹幕神器

如果我们发送一个弹幕,需要做的是哪些步骤呢。

点击发送弹幕的输入框,使得光标到达输入框,然后输入需要发送的文字,按回车键。这个时候就算是发送成功一个弹幕。

那如果我们用程序如何实现呢?

首先,有一些限制,就是程序自己找到弹幕的输入框是有些难度,为了降低难度,我们需要帮助程序找到发送弹幕的输入框,其次,就是发送的内容,为了让发送的文字可控,我能可以将发送的文字写入一个txt文本文档中。那我们的程序就需要读取文档,并将文档复制到粘贴板,每次只读取一行文字。我们平常的复制,粘贴的快捷键这个时候就可以用到了。

Ctrl+C是复制,Ctrl+V是粘贴。

当明白这些之后,我们的思路就大致理清楚了,用程序复制一段文字,粘贴到发送弹幕的输入框,点击回车键发送。

然后循环,执行以上步骤,就实现了自动发送弹幕的流程。

思路很单纯,我们看看程序如何实现这个步骤。


03

源码

#include<stdio.h>#include<Windows.h>#define FILE_NAME "dm.txt"#define LINE_COUNT 1024#define TIME_SPAN 8000
bool copy2Bord(const char *data, int len){ if (OpenClipboard(NULL)) { EmptyClipboard(); HGLOBAL clipBuffer = GlobalAlloc( GMEM_DDESHARE, len + 2); char *buff = (char*)GlobalLock(clipBuffer);
strcpy(buff,data);
GlobalUnlock(clipBuffer);
SetClipboardData(CF_TEXT,clipBuffer);
CloseClipboard();
return true; } else { return false; }}void sendDM(){ FILE *fp; fp = fopen(FILE_NAME, "r"); if (fp == NULL) { printf("打开文件失败:%s 失败", FILE_NAME); return; } char buff[LINE_COUNT]; while (fgets(buff, sizeof(buff), fp)) { while (!copy2Bord(buff, strlen(buff)-1)){} mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); Sleep(20); keybd_event( VK_CONTROL, 0, 0, 0); Sleep(20); keybd_event('V', 0, 0, 0); Sleep(20); keybd_event('V', 0, KEYEVENTF_KEYUP, 0); Sleep(20); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); Sleep(20); keybd_event(VK_RETURN, 0, 0, 0); Sleep(20); keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0); memset(buff,0,sizeof(buff)); Sleep(TIME_SPAN); } fclose(fp);}
int main(){ printf("准备好了吗?\n"); system("pause"); printf("5秒后开始\n "); Sleep(5000); while (1) { sendDM(); } return 0;}

注意:代码中dm.txt是一个你自己建立的文本。里面的内容可以自己编写。



扫描二维码