天天看點

Re:連點器

連點器,顧名思義,可以連續點的機器。

當然,連續可快可慢;機器意味着不許要人工點選;可以是生活中的機器,也可以是電腦中的程式。

既然我們是coder,那麼這種程式應該用我們的雙手親手寫下吧!(當然你要Ctrl+C&Ctrl+V我也沒辦法……)

連點器

介紹

顧名思義,可以連續點的機器。

當然,連續可快可慢;機器意味着不許要人工點選;可以是生活中的機器,也可以是電腦中的程式。

現在,連點器網上一搜一大堆,什麼滑鼠連點精靈,鼠大俠……不僅有電腦的,還有安卓系統的。

但是,用這些軟體,我很不放心。說不定就有什麼木馬病毒呢……

再說,我們這些coder都不喜歡那些總是誤報的殺軟,測試程式時等了十幾秒結果彈出個“危險木馬程式”的警告,是以(我)在code時一般是不開360等殺軟的。

那怎麼辦呢?

既然我們是coder,那麼這種程式應該用我們的雙手親手寫下吧!(當然你要Ctrl+C&Ctrl+V我也沒辦法……)

Code0

1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<iostream>
  4 #include<windows.h>
  5 using namespace std;
  6 #define IL inline
  7 #define RE register
  8 
  9 POINT curpos;//滑鼠的位置
 10 float i;//點選速度
 11 int j;//點選次數
 12 int a=0,b=0;//貯存滑鼠坐标
 13 bool fast,inf;
 14 
 15 IL void selectrate()//選擇點選速度、次數
 16 {
 17     while(1)
 18     {
 19         system("cls");
 20         printf("由于windows的最小計時機關為毫秒,故輸入大于1000的數字将會被轉化為1000,輸入0會…會失去等待時間!\n請輸入點選頻率 n 次/秒\n(0.01< n <=1000)\n");
 21         cin>>i; 
 22         if(i==0) fast=1;
 23         i=(int)(1000/i);
 24         printf("請輸入點選次數 x 次\n( 0 暗示無限次)\n");
 25         cin>>j;
 26         if(j==0) inf=1;
 27         break;
 28     }
 29 }
 30 
 31 IL void click(int i,int j)
 32 {
 33     while(1)
 34     {
 35         if(GetAsyncKeyState(VK_SPACE))
 36         {
 37             RE int k=j;
 38             if(inf) k=-1;
 39             printf("運作\n");
 40             while(k--)//點選次數
 41             {
 42                 if(a&&b)SetCursorPos(a,b);
 43                 mouse_event(MOUSEEVENTF_LEFTDOWN,curpos.x,curpos.y,0,0);
 44                 mouse_event(MOUSEEVENTF_LEFTUP,curpos.x,curpos.y,0,0);
 45                 if(!fast) Sleep(i);
 46                 //鎖定目标位置
 47                 if(GetAsyncKeyState(VK_CONTROL))
 48                 {
 49                     if(a&&b)
 50                     {
 51                         a=0;b=0;
 52                         printf("解除鎖定\n");
 53                     }
 54                     else
 55                     {
 56                         GetCursorPos(&curpos);
 57                         a=(int)curpos.x;
 58                         b=(int)curpos.y;
 59                         printf("位置鎖定 %d %d\n",a,b);
 60                     }
 61                 }
 62                 if(GetAsyncKeyState(VK_SPACE))
 63                 {
 64                     printf("暫停\n");Sleep(100);
 65                     //接收到信号才繼續執行
 66                     while(1)
 67                     {
 68                         if(GetAsyncKeyState(VK_SPACE))
 69                         {
 70                             printf("繼續\n");
 71                             break;
 72                         }
 73                         Sleep(100);
 74                         if(GetAsyncKeyState(VK_ESCAPE))
 75                         {
 76                             printf("重新開始\n");
 77                             return;
 78                         }
 79                     }
 80                 }
 81                 if(GetAsyncKeyState(VK_ESCAPE))
 82                 {
 83                     printf("重新開始\n");
 84                     return;
 85                 }
 86             }
 87             printf("按空格鍵再來一次\n");
 88             while(1)
 89             {
 90                 if(GetAsyncKeyState(VK_SPACE)) break;
 91                 Sleep(200);
 92                 if(GetAsyncKeyState(VK_ESCAPE))
 93                 {
 94                     printf("重新開始\n");
 95                     return;
 96                 }
 97             }
 98         }
 99     Sleep(250);
100     }
101 }
102 
103 
104 int main()
105 {
106     system("mode con cols=25 lines=10");
107     system("title made by S.O.A.F");
108     SetWindowPos(GetForegroundWindow(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
109     printf("自動視窗置頂\n空格鍵開始,暫停,繼續\nESC鍵重新開始\n4.點選的位置為滑鼠的位置。\nCTRL鍵鎖定,解鎖位置\n");
110     
111     while(1)
112     {
113         fast=inf=0;
114         system("pause");
115         selectrate();
116         system("cls");
117         printf("頻率%.2f次/秒\n次數%d次\n空格鍵 開始 暫停 繼續\nESC鍵 重新開始\nCTRL鍵 鎖定 解鎖位置\n",1000/i,j);
118         click(i,j);
119     }
120     return 0;
121 }      

這裡有許多功能。

視窗置頂

鎖定位置

中途暫停

中途啟動

……

(但是效率不是特别高)

在我經過一番測試後,覺得許多功能都是沒必要的,就把他們删了。

1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<iostream>
 4 #include<windows.h>
 5 using namespace std;
 6 #define IL inline
 7 #define RE register
 8 POINT curpos;//滑鼠的位置
 9 int main()
10 {
11     float i;//點選速度
12     bool fast,flag;
13     system("mode con cols=25 lines=10");
14     system("title Code by S.O.A.F");
15     SetWindowPos(GetForegroundWindow(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
16     printf("自動視窗置頂\n空格鍵開始,暫停,繼續\nESC鍵重新開始\n4.點選的位置為滑鼠的位置。\nCTRL鍵鎖定,解鎖位置\n");
17     
18     while(1)
19     {
20         fast=flag=0;
21         system("pause");
22         system("cls");
23         
24         printf("由于windows的最小計時機關為毫秒,故輸入大于1000的數字将會被轉化為1000,輸入0會…會失去等待時間!\n請輸入點選頻率 n 次/秒\n(0.01< n <=1000)\n");
25         cin>>i; 
26         if(i==0) fast=1;
27         else i=(int)(1000/i);
28         system("cls");
29         
30         printf("頻率%.2fHz\n空格鍵 開始\nESC鍵 重新開始\n",1000/i);
31         
32         while(1)//等待空格觸發開始 
33         {
34             if(GetAsyncKeyState(VK_SPACE))
35             {
36                 printf("開始運作\n");
37                 while(1)
38                 {
39                     if(!fast) Sleep(i);
40                     mouse_event(MOUSEEVENTF_LEFTDOWN,curpos.x,curpos.y,0,0);
41                     mouse_event(MOUSEEVENTF_LEFTUP,curpos.x,curpos.y,0,0);
42                     if(GetAsyncKeyState(VK_ESCAPE))
43                     {
44                         printf("重新開始\n");
45                         flag=1;
46                         break;
47                     }
48                 }
49             }
50             if(GetAsyncKeyState(VK_ESCAPE))
51             {
52                 printf("end\n");
53                 flag=1;
54             }
55             if(flag) break;
56         }
57         
58     }
59     return 0;
60 }      

隻有短短的六十行!

還把函數都涵蓋到主函數裡面了。

反正,用來給釘釘直播刷贊應該夠了吧……

測試程式

那要是不刷贊無聊的時候,怎麼來測試連點器的性能呢?

我又翻了翻mouse的一些函數,找到了mouse_event();

1 #include<windows.h>
 2 #include<cstdio>
 3 #include<iostream>
 4 using namespace std;
 5 
 6 
 7 int main()
 8 {
 9     HANDLE ConsoleWin;
10     INPUT_RECORD eventMsg;
11     DWORD Pointer ;
12     long long a=0;
13     ConsoleWin = GetStdHandle(STD_INPUT_HANDLE);//Get the console window
14  
15     while(1){
16         ReadConsoleInput(ConsoleWin, &eventMsg, 1, &Pointer);//Read input msg
17         if (eventMsg.EventType == MOUSE_EVENT && eventMsg.Event.MouseEvent.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) printf("%lld\n",++a);
18     }
19     return 0;
20 }      

運作後,點一下控制台就會記錄+1。十分友善快捷!

(記得關閉“快速編輯模式”!)