c++连点器

想知道我怎么做到的吗?

下面代码放到dev-c++里面运行就可以。

#include <windows.h>
#include <iostream>
#include <thread>

// 检测指定键是否被按下
bool isKeyPressed(int key) {
    return GetAsyncKeyState(key) & 0x8000;
}

// 检测 'C' 键或 'c' 键是否被按下
bool isCKeyPressed() {
    return isKeyPressed('C') || isKeyPressed('c');
}

// 模拟鼠标点击(左键或右键)
void mouseClick(int button) {
    if (button == 0) {  // 左键
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    } else if (button == 1) {  // 右键
        mouse_event(MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0);
        mouse_event(MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0);
    }
}
int main() {
    std::cout << "连点器将在5秒后开始运行,请将鼠标放到需要点击的位置。" << std::endl;
    Sleep(5000);  // 等待5秒
    int clicks_per_second = 1000;  // 每秒点击次数,这里可以改
    int duration = 10;  // 持续时间(秒),这里可以改
    int total_clicks = clicks_per_second * duration;  // 总点击次数
    int current_clicks = 0;  // 当前点击次数
    bool isRunning = true;  // 连点器运行状态
    int button = 0;  // 当前点击类型
    while (current_clicks < total_clicks) {
        if (isKeyPressed('C')||isKeyPressed('c')) {  // 检测 'C' 键或 'c' 键,切换运行状态
            isRunning = !isRunning;
            std::cout << (isRunning ? "连点器已启动。" : "连点器已暂停。") << std::endl;
            Sleep(1000000);
        }
        if (isKeyPressed('V') || isKeyPressed('v')) {  // 检测'V'键或'v'键,切换点击类型
            button = 1 - button;
            std::cout << (button == 0 ? "当前为左键点击。" : "当前为右键点击。") << std::endl;
            Sleep(100);
        }

        // 只有当连点器正在运行时才执行点击c
        if (isRunning) {
            mouseClick(button);
            current_clicks++;
            Sleep(1000/clicks_per_second);
        }
    }
    std::cout << "连点结束。" << std::endl;

    return 0;
}

3 个赞

GetAsyncKeyState 的参数是虚拟键码,不是ASCLL码,大写字母可以这样搞,因为对应的ASCLL码刚好是虚拟键码的值,但小写就不行了,对应的是其他的虚拟键码,所以不能 isKeyPressed('c') ,也没必要,因为 GetAsyncKeyState 侦测的是虚拟键码,只管是否按下了这个键,不分大小写,所以应该是:

if (isKeyPressed('C')) {  // 检测 'C' 键或 'c' 键,切换运行状态
	isRunning = !isRunning;
	std::cout << (isRunning ? "连点器已启动。" : "连点器已暂停。") << std::endl;
	Sleep(1000);
}
if (isKeyPressed('V')) {  // 检测'V'键或'v'键,切换点击类型
	button = 1 - button;
	std::cout << (button == 0 ? "当前为左键点击。" : "当前为右键点击。") << std::endl;
	Sleep(100);
}
1 个赞