美文网首页C语言程序员
C语言编程学习:用C语言写一个鼠标连点器

C语言编程学习:用C语言写一个鼠标连点器

作者: 小辰带你看世界 | 来源:发表于2018-05-20 19:08 被阅读34次

    C语言是面向过程的,而C++是面向对象的

    C和C++的区别:

    C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

    C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

    C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

    介绍:

    鼠标连点器就是用来代替你的手在电脑上不停的点击电脑,介绍完毕!

    有什么用?

    爱打游戏吗?喜欢刷等级的同学收藏了,睡一觉就满级了。让他自己在电脑上不停的点点点。

    我系渣渣辉,挂机一整晚……

    2.在工作学习中,你是不是有许多网上的东西要学,是你必须学的,其实就是你要不停的点点点,

    这个时候它的作用就不用我说了吧,专治各种网上挂时长。

    3.看过直播的都知道,有些给主播送礼物的土豪为了表达心意,送上几千甚至几万的礼物,这时候就要不停的点击屏幕,不能停下来,不然礼物的特效就会终断,鼠标连点器的作用有点强大啊。

    小编推荐一个学C语言/C++的学习裙【 七三零,一三零,二二一 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

    功能与原理

    功能:仅限鼠标左键,点击频率0.01-1000次/秒,(个人觉得点击速度太低和太高都用不上),点击次数可选,点击位置可以锁定,支持重复上一次的运行设定。

    原理:

    引入头文件 windows.h ,调用几个API

    1.GetAsyncKeyState 获取键盘信息,判断某个键是否按下,使得程序无论处于什么状态都能响应

    2.mouse_event 模拟鼠标的点击(按下和弹起)

    3.GetCursorPos 获取鼠标当前的位置

    4.SetCursorPos 将鼠标移动到指定位置

    代码

    #include

    #include

    #include

    POINT curpos;//鼠标的位置

    float i;//点击速度

    int j;//点击次数

    int a=0,b=0;//储存鼠标坐标

    void selectrate(void);//选择点击速度、次数

    void click(int i,int j);//开始点击

    int main()

    {

    system("mode con cols=25 lines=10");//窗口大小

    system("title 源世界.Dracula出品");

    //简单说明

    printf("1.这是一个鼠标连点器,操作异常简单。 2.空格键开始,暂停,继续 3.ESC键重新开始 4.点击的位置为鼠标的位置。 5.CTRL键锁定,解锁位置 ");

    while(1)

    {

    printf("按空格键开始");

    selectrate();

    system("cls");//清屏

    printf("频率%.2f次/秒 次数%d次 空格键 开始 暂停 继续 ESC键 重新开始 CTRL键 锁定 解锁位置 ",

    1000/i,j);

    click(i,j);

    }

    return 0;

    }

    void selectrate(void)

    {

    while(1)

    {

    Sleep(200);

    if(GetAsyncKeyState(VK_SPACE))

    {system("cls");

    printf("请输入点击频率 n 次/秒 (0.01< n <=1000) ");

    scanf("%f",&i);

    i=(int)(1000/i);

    printf("请输入点击次数 x 次 ( 0 表示无限次) ");

    scanf("%d",&j);

    j=j==0?1000000000:j;//用一个极大的数表示无限

    break;}

    }

    }

    void click(int i,int j)

    {

    while(1)

    {

    if(GetAsyncKeyState(VK_SPACE))

    {

    int k=j;

    printf("运行 ");

    while(k--)//点击次数

    {

    if(a&&b)SetCursorPos(a,b);

    mouse_event(MOUSEEVENTF_LEFTDOWN,curpos.x,curpos.y,0,0);

    mouse_event(MOUSEEVENTF_LEFTUP,curpos.x,curpos.y,0,0);

    Sleep(i);

    小编推荐一个学C语言/C++的学习裙【 七三零,一三零,二二一 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

    //锁定目标位置

    if(GetAsyncKeyState(VK_CONTROL))

    {

    if(a&&b)

    {a=0;b=0;

    printf("解除锁定 ");}

    else

    {GetCursorPos(&curpos);

    a=(int)curpos.x;

    b=(int)curpos.y;

    printf("位置锁定 %d %d ",a,b);}

    }

    if(GetAsyncKeyState(VK_SPACE))

    {

    printf("暂停 ");

    //接收到信号才继续执行

    while(1)

    {

    if(GetAsyncKeyState(VK_SPACE))

    {printf("继续 ");

    break;}

    Sleep(200);

    if(GetAsyncKeyState(VK_ESCAPE))

    {printf("重新开始 ");

    return ;}

    }

    }

    if(GetAsyncKeyState(VK_ESCAPE))

    {printf("重新开始 ");

    return ;}

    }

    printf("按空格键再来一次 ");

    while(1)

    {

    if(GetAsyncKeyState(VK_SPACE))

    break;

    Sleep(200);

    if(GetAsyncKeyState(VK_ESCAPE))

    {printf("重新开始 ");

    return ;}

    }

    }

    Sleep(250);

    }

    }

    效果截图:

    操作

    按键只有三个,Space键,Ctrl键和Esc键。

    Space键控制开始、暂停、继续。若点击次数有限且点击结束后,按Space键可以重复一轮点击。

    Ctrl键控制位置的锁定和解锁。(仅在点击过程中有效)

    Esc键则是重新开始设定点击频率和次数。

    小编推荐一个学C语言/C++的学习裙【 七三零,一三零,二二一 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

    总结:

    代码简单,主要是判断语句和循环语句,适宜小白借鉴 可修改性强,喜欢的弄个GUI啊,图标啊什么的都行,自定义按键,多点控制也不是问题

    实用,比某些几个M大的软件好多了(就一个鼠标连点器还这么大,怕不是有后门)

    自己写的,看得见摸得着,用的放心。贯彻极简风格,舍弃GUI(因为用不着),代码量100行。

    这些是C/C++能做的

    服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

    相关文章

      网友评论

        本文标题:C语言编程学习:用C语言写一个鼠标连点器

        本文链接:https://www.haomeiwen.com/subject/qetzdftx.html