一、多线程
二、代码
tap命令大致会有差不多1秒的延迟,所以简单的for循环tap命令只是看到每隔1秒点击的效果。
只要你的手机支持多点触控(现在一般都是),那么就能实现和你疯狂点击屏幕一样的速度。
方法创建多个线程,每个线程都点击屏幕。同时,让这些线程大致都隔几十毫秒执行,这样就不会造成同时点击tap而只识别了仅仅部分的情况(手机反应不过来)。
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<thread>
#if defined(__linux__)
// Linux系统
#include<unistd.h>
#elif defined(_WIN32)
// Windows系统
#include<windows.h>
#endif
using namespace std;
// 线程的个数
#define THREAD_ADVERTISEMENT_SIZE 7
// 点击的次数
#define TAP_TIME 500
/* 秒 */
void my_p_sleep(int time) {
#if defined(__linux__)
// Linux系统
sleep(time);
#elif defined(_WIN32)
// Windows系统
Sleep((time * 1000));
#endif
}
/* 毫秒 */
void my_m_sleep(int time) {
#if defined(__linux__)
// Linux系统
usleep(time * 1000);
#elif defined(_WIN32)
// Windows系统
Sleep(time);
#endif
}
void tap_advertisement()
{
int i = TAP_TIME;
while (i--)
{
/* 点击的位置 */
system("adb shell input tap 967 1740");
printf("Tap[%d] ", i);
}
}
int main()
{
/**declare
*/
thread threads_advertisement[THREAD_ADVERTISEMENT_SIZE];
/**start
*/
for (int i = 0; i < THREAD_ADVERTISEMENT_SIZE; i++)
{
threads_advertisement[i] = thread(tap_advertisement);
my_m_sleep(50);
}
/**join
*/
for (int i = 0; i < THREAD_ADVERTISEMENT_SIZE; i++)
{
threads_advertisement[i].join();
}
cout << "completion" << endl;
return 0;
}