C++自创QQ刷屏器

呵呵,刚写了个钉钉刷赞器,这儿又来个QQ刷屏器。
毕竟只是玩玩的,不要当真!!
(刷的是同一内容。)

使用方法:
1.打开QQ聊天窗口,将光标放在输入框;
2.关闭中文输入法;
3.启动程序,输入内容、次数、秒速(可不填);
4.按下回车,控制台立即隐藏。在输入框单击就开刷了。
5.注意:刷的时候不要动鼠标!!

#include <stdlib.h>
#include <conio.h>
#include <Windows.h>
#include <stdexcept>
#include <iostream>
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME) & 0x8000 ? 1:0 ))
#define STR_MAX 512  //刷屏内容上限 
#define SPD_MAX 32 //秒速上限 
using namespace std;
VOID KeyP(BYTE bVk) 
{  //Press
 keybd_event(bVk,0,0,0);
}
VOID KeyR(BYTE bVk) 
{  //Release
 keybd_event(bVk,0,2,0);
}
VOID KeyPR(BYTE bVk) 
{
 keybd_event(bVk,0,0,0);
 keybd_event(bVk,0,2,0);
}
VOID PutFormatToClipboard(UINT clipFormat,LPSTR str)
{  	//剪贴板操作
   if (!OpenClipboard(NULL)||!EmptyClipboard())    
   {   
     throw runtime_error(string{"PutFormatToClipboard():打开或清空剪切板出错!\n"});	//如果有警告那么就把{}改成()或用c++11
     return;   
   }   
   HGLOBAL hMen;   
   hMen=GlobalAlloc(GMEM_MOVEABLE,((strlen(str)+1) * sizeof(char))/*sizeof(strText)*/);    
   if (!hMen)   
   {   
       throw runtime_error(string{"PutFormatToClipboard():分配全局内存时出错!\n"});  
       CloseClipboard();   
       return;         
   }     
    LPSTR lpStr=(LPSTR)GlobalLock(hMen);     
    memcpy(lpStr,str,(strlen(str) * sizeof(char)));    
    lpStr[strlen(str)]=(char)0;     
    GlobalUnlock(hMen);    
    SetClipboardData(clipFormat,hMen);   
    CloseClipboard();         
    return;   
}
int main()
{
   char text[STR_MAX];
   int isCon=0;
   float speed=4;
   UINT count=1;
   SetConsoleTitle("QQ刷屏器");
   system("mode con cols=30 lines=20"); 
 do {
   system("cls");
   system("color 0B"); 
   cout<<"       QQ简易刷屏工具\n\n";
   cout<<"1. 输入内容: ";
   cin>>text;
   cout<<"\n2. 输入次数: ";
   cin>>count;
   cout<<"\n3.是否设置秒速(默认4次/秒)?\n[按 1:是 / 其它:否] ";
   int ch=getch();
 switch(ch)
 {
  case '1':
   do{
    cout<<"\n\n输入秒速(0.25~32):";
    cin>>speed;
    if(speed < 0.25f || speed > SPD_MAX)
       cout<<"\n不符合范围(0.25~32)!\n";
   }while(speed < 0.25f || speed > SPD_MAX);
   break;
  default:
      break;
 }
   PutFormatToClipboard(CF_TEXT,text);
   Sleep(700);
   system("cls");
   system("color 0E");
   cout<<"\n\n准备就绪。在输入框单击以开始刷屏.\n";
   Sleep(500);
   ShowWindow(GetConsoleWindow(),SW_HIDE);
      while(!KEY_DOWN(MOUSE_MOVED));	//等待鼠标单击
   MessageBeep(MB_ICONINFORMATION);
   Sleep(700);
 for(int i=1;i<=count;i++)
 {
  KeyP(VK_LCONTROL);
  KeyPR('V');
  KeyR(VK_LCONTROL);
  Sleep(10);
  KeyP(VK_LCONTROL);
  KeyPR(VK_RETURN);
  KeyR(VK_LCONTROL);
  Sleep(DWORD(1000.0 / speed - 10.0f));
 }
   Sleep(1000);
   ShowWindow(GetConsoleWindow(),SW_SHOW);
   MessageBeep(MB_ICONINFORMATION);
   system("cls");
   system("color 0A");
   cout<<"刷屏成功!\n";
   Sleep(200);
   cout<<"是否继续?";
   Sleep(30);
   cout<<"[按 1:是 / 其它:否]";
   int ch2=getch();
   if(ch2 == '1')
       isCon=true;
   else
       isCon=false;
 }while(isCon);
   return 0;
} 

最大秒速 32Hz ,挺快的!

我一开始不知道剪贴板操作,用的是 程序编辑txt ->打开记事本 -> 快捷键全选复制 -> taskkill关闭记事本 来复制,特别麻烦,现在用剪贴板操作方便多了。

欢迎点赞打赏!!!!

发布了9 篇原创文章 · 获赞 2 · 访问量 1374

猜你喜欢

转载自blog.csdn.net/cjz2005/article/details/104424890