鼠标帮点程序

背景:因为每次外出电脑都得从平衡模式切换到办公模式,过程复杂,因此做了个简单的鼠标帮点代码

#include <iostream>
#include <windows.h>
#include <chrono>
#include <vector>
#include <thread>//可提供延迟函数

using namespace std;

enum Mode
{
    Balence,
    Office
};

class modeSwitch
{
public:
    modeSwitch(vector<vector<int>> balenceLocations, vector<vector<int>> officeLocations, vector<int> intervalTimes)
        : m_balenceLocations(balenceLocations), m_officeLocations(officeLocations), m_intervalTimes(intervalTimes)
    {
        if (m_balenceLocations.empty() || m_officeLocations.empty() || m_intervalTimes.empty())
        {
            cout << "初始化失败!" << endl;
        }
    }

    void switchMode(Mode mode)
    {
        switch (mode)
        {
        case Balence:
            switchToBalancedMode();
            break;
        case Office:
            switchToOfficeMode();
            break;
        default:
            cout << "未选择初始化模式" << endl;
        }
    }

private:
    vector<vector<int>> m_balenceLocations;
    vector<vector<int>> m_officeLocations;
    vector<int> m_intervalTimes;

    static constexpr int DEFAULT_DELAY = 1000;//默认为1s

    void delayFunction(int milliseconds)
    {
        this_thread::sleep_for(chrono::milliseconds(milliseconds));
    }

    void switchToBalancedMode()
    {
        cout << "切换平衡模式" << endl;
        processClicks(m_balenceLocations);
    }

    void switchToOfficeMode()
    {
        cout << "切换办公模式" << endl;
        processClicks(m_officeLocations);
    }

    void processClicks(const vector<vector<int>>& locations)
    {
        int index = 0;
        for (auto& row : locations)
        {
            if (row.size() < 2)
            {
                cout << "无效位置" << endl;
                continue;
            }
            cout << "当前点击位置 (" << row[0] << ", " << row[1] << ")" << endl;
            SetCursorPos(row[0], row[1]);
            mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);//模拟鼠标左键
            mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);

            delayFunction(index < m_intervalTimes.size() ? m_intervalTimes[index++] : DEFAULT_DELAY);
        }
    }
};

int main()
{
    int mode_seclect;
    vector<vector<int>> balenceLocations = {
        {1318, 1413},
        {937, 704},
        {928, 304},
        {1406, 444},
        {1133, 307},
        {1444, 800},
        {2360, 1288}
    };//平衡模式位置数组
    vector<vector<int>> officeLocations = {
        {700, 800},
        {900, 1000},
        {1100, 1200}
    };
    vector<int> times = { 20000, 4000, 4000 ,4000,4000,10000};//延迟时间数组

    cout << "请输入0切换平衡模式,输入1切换办公模式: ";
    cin >> mode_seclect;

    if (cin.fail() || (mode_seclect != 0 && mode_seclect != 1))
    {
        cout << "无效输入,请输入0或1切换模式" << endl;
        return 1;
    }

    modeSwitch ms(balenceLocations, officeLocations, times);
    ms.switchMode(static_cast<Mode>(mode_seclect));

    return 0;
}

位置数组可以通过微信截图工具获得

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值