欢迎光临散文网 会员登陆 & 注册

教你自制连点器(C++)

2023-07-23 14:54 作者:大蚕豆awa  | 我要投稿

不会用蓝奏云,就写笔记里吧(求三联!)

#include <iostream>

#include <Windows.h>

#include <mmsystem.h>  


// 播放提示音要的东西

#pragma comment(lib, "winmm.lib")  


using namespace std;


int main() {


    HWND hwnd = NULL;// 窗口句柄


    POINT point;// 鼠标坐标


    bool isstart = false;// 开启或关闭


    int ms = 0;// 按下或弹起的间隔


    // 使用说明

    cout << "使用说明:按F8获取目标窗口句柄(确定目标窗口),按F9设置频率单位为ms,推荐20ms(默认为0),按鼠标中键开启或关闭,有提示音,开启后按住鼠标左键连点,按住鼠标右键右连点。" << endl;


    while (true)

    {

        if (GetAsyncKeyState(VK_MBUTTON))// 设置开启或关闭

        {

            isstart = !isstart;


            if (isstart)

            {

                cout << "已打开" << endl;

                // 播放开启提示音

                PlaySound(TEXT("C:\\Windows\\Media\\Windows Hardware Insert.wav"), NULL, SND_FILENAME);

            }

            else {

                cout << "未打开" << endl;

                // 播放关闭提示音

                PlaySound(TEXT("C:\\Windows\\Media\\Windows Hardware Remove.wav"), NULL, SND_FILENAME);

            }

        }


        if (GetAsyncKeyState(VK_F8)) {// 获取窗口句柄


            hwnd = GetForegroundWindow();


            if (hwnd != NULL)

            {

                cout << hwnd << endl;


                char className[256];


                GetClassNameA(hwnd, className, sizeof(className)); // 获取窗口类名(自己方便、确定获取)


                cout << "窗口类名: " << className << endl;

            }


            // 防误触

            Sleep(200);


        }

        if (GetAsyncKeyState(VK_F9))// 获取按下或弹起间隔

        {

            cout << "输入延迟ms(按下和弹起都是这个延迟)" << endl;

            cin >> ms;

        }

        if (isstart&&hwnd!=NULL&&GetAsyncKeyState(VK_LBUTTON))

        {

            // 获取鼠标坐标

            GetCursorPos(&point);


            // 转化为窗口内的相对坐标

            ScreenToClient(hwnd,&point);


            // 模拟左键点击按下事件

            PostMessageA(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(point.x, point.y));


            // 按下间隔

            Sleep(ms);


            // 模拟左键点击释放事件

            PostMessageA(hwnd, WM_LBUTTONUP, 0, MAKELPARAM(point.x, point.y));


            // 弹起间隔

            Sleep(ms);


        }

        else if (isstart && hwnd != NULL && GetAsyncKeyState(VK_RBUTTON))

        {

            // 获取鼠标坐标

            GetCursorPos(&point);


            // 转化为窗口内的相对坐标

            ScreenToClient(hwnd, &point);


            // 模拟左键点击按下事件

            PostMessageA(hwnd, WM_RBUTTONDOWN, MK_RBUTTON, MAKELPARAM(point.x, point.y));


            // 按下间隔

            Sleep(ms);


            // 模拟左键点击释放事件

            PostMessageA(hwnd, WM_RBUTTONUP, 0, MAKELPARAM(point.x, point.y));


            // 弹起间隔

            Sleep(ms);


        }


    }


}

教你自制连点器(C++)的评论 (共 条)

分享到微博请遵守国家法律