1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java做一个鼠标连点_用C语言写一个鼠标连点器

java做一个鼠标连点_用C语言写一个鼠标连点器

时间:2022-10-09 02:59:41

相关推荐

java做一个鼠标连点_用C语言写一个鼠标连点器

学习C语言有一小段时间了,打算自己捣鼓一些小玩意,于是就有了这么一款鼠标连点器。

介绍

用code blocks编写,GNU编译,贯彻极简风格,舍弃GUI(因为用不着),代码量100行。

功能

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

操作

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

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

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

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

原理

引入头文件 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");//窗口大小

SetConsoleTitle("click");//标题

//简单说明

printf(

"这是一个鼠标连点器,\n\

操作异常简单,\n\

空格键开始,暂停,继续\n\

ESC键重新开始\n\

点击的位置为鼠标的位置。\n\

CTRL键锁定,解锁位置\n\

——csdnblue\n\n");

while(1)

{

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

selectrate();

system("cls");//清屏

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

1000/i,j);

click(i,j);

}

return 0;

}

void selectrate(void)

{

while(1)

{

Sleep(200);

if(GetAsyncKeyState(VK_SPACE))

{system("cls");

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

scanf("%f",&i);

i=(int)(1000/i);

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

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("运行\n");

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);

//锁定目标位置

if(GetAsyncKeyState(VK_CONTROL))

{

if(a&&b)

{a=0;b=0;

printf("解除锁定\n");}

else

{GetCursorPos(&curpos);

a=(int)curpos.x;

b=(int)curpos.y;

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

}

if(GetAsyncKeyState(VK_SPACE))

{

printf("暂停\n");

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

while(1)

{

if(GetAsyncKeyState(VK_SPACE))

{printf("继续\n");

break;}

Sleep(200);

if(GetAsyncKeyState(VK_ESCAPE))

{printf("重新开始\n");

return ;}

}

}

if(GetAsyncKeyState(VK_ESCAPE))

{printf("重新开始\n");

return ;}

}

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

while(1)

{

if(GetAsyncKeyState(VK_SPACE))

break;

Sleep(200);

if(GetAsyncKeyState(VK_ESCAPE))

{printf("重新开始\n");

return ;}

}

}

Sleep(250);

}

}

优缺点

代码简单,主要是判断语句和循环语句,适宜小白借鉴

可修改性强,喜欢的弄个GUI啊,图标啊什么的都行,自定义按键,多点控制也不是问题

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

没有对错误输入处理,如果不小心输入了其他字符,程序崩溃什么的很正常

不习惯这种命令行风格,我也没办法

后记

其实用 vb 写可能会更简单。

编译出release 版本为 10k左右,如果自己添加图标的话推荐 16 × 16 的,不然图标都比程序大了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。