用C語言實現一個自動刷彈幕的小程序


 

使用兩種方式來進行刷彈幕操做 1 模擬鍵盤輸入,自動輸入文字,而後點擊回車。 2 操做剪切板,直接將剪切板的文字粘貼到輸入框,而後回車。程序員

模擬鍵盤輸入

若是要輸入「彈幕」這兩個漢字,通常來講,咱們須要分別輸入da n m u 這五個個字母以後,而後按下空格,而後回車。 在windows系統中,模擬鍵盤輸入的系統調用函數是keybd_event(); 編程

如何所示的程序,將文件中的文本一行一行讀入到數組中,而後根據文本中的字母來模擬鍵盤的輸入,每輸入完一行就輸入一個空格和一個回車。bilibili.txt中的文本應該是要輸入的彈幕的拼音windows

1 2 3 hahahahahaha shuadanmuchegnxu shuadanmuchengxu數組

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' ) spa

{ keybd_event(buf[i] + 'A' - 'a' , 0, 0, 0); 設計

keybd_event(buf[i] + 'A' - 'a' , 0, KEYEVENTF_KEYUP, 0); }blog

 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中的文本應該是要輸入的彈幕

若是你也想成爲程序員,想要快速掌握編程,趕忙關注小編加入學習企鵝圈子吧!

裏面有資深專業軟件開發工程師,在線解答你的全部疑惑~編程語言入門「so easy」

資料包含:編程入門、遊戲編程、課程設計等。

免費學習書籍:


 

免費學習資料:


 

1 2 3 哈哈哈哈 刷彈幕程序 刷彈幕程序

//將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 ; }

相關文章
相關標籤/搜索