C語言實現一個自動刷彈幕的程式
阿新 • • 發佈:2019-02-14
本文使用兩種方式來進行刷彈幕操作
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;
}