精易论坛

标题: 怎么判断鼠标是否重复点击某个区域或者某几个区域 [打印本页]

作者: ttt0410    时间: 2019-12-7 15:13
标题: 怎么判断鼠标是否重复点击某个区域或者某几个区域
怎么判断鼠标是否重复点击某个区域或者某几个区域

比如鼠标点击坐标如下
5.5    5.5    20.633    900.3    6.6    4.4    5.5   5.5   6.6

这里5.5这块在最后就被重复点击了5次,怎么让程序判断,求个方法

以及如下这种
1.1    2.2    3.3    4.4    5.5    1.1    2.2    3.3    4.4    5.5    1.1    2.2    3.3    4.4    5.5    1.1    2.2    3.3    4.4    5.5    1.1    2.2    3.3    4.4    5.5   

这里重复点击了1.1    2.2    3.3    4.4    5.5    这5个坐标,又该怎么判断啊?


补充内容 (2019-12-7 15:19):
主要是点击的位置可能很接近,要视为一个位置,比如5.5和5.6是差不多的,算一个位置
作者: ﹏B°o╮    时间: 2019-12-7 15:30
鼠标钩子?
作者: ttt0410    时间: 2019-12-7 15:36
﹏B°o╮ 发表于 2019-12-7 15:30
鼠标钩子?

没懂

所有点击坐标都是我自己的程序点击的(点击坐标不固定,是计算出来的)

但是我不知道怎么让程序知道自己重复点击了
作者: ﹏B°o╮    时间: 2019-12-7 15:39
ttt0410 发表于 2019-12-7 15:36
没懂

所有点击坐标都是我自己的程序点击的(点击坐标不固定,是计算出来的)

程序执行点击的时候,你记录不就好了吗?
作者: ttt0410    时间: 2019-12-7 15:41
﹏B°o╮ 发表于 2019-12-7 15:39
程序执行点击的时候,你记录不就好了吗?

记录了咋判断呢,比如我列出来的那些坐标,我自己看是可以知道,程序怎么判断
作者: jackliuwenli    时间: 2019-12-7 15:47
试试看~

鼠标判断.e

918.76 KB, 下载次数: 6, 下载积分: 精币 -2 枚


作者: ﹏B°o╮    时间: 2019-12-7 15:47
ttt0410 发表于 2019-12-7 15:41
记录了咋判断呢,比如我列出来的那些坐标,我自己看是可以知道,程序怎么判断

把你现在点击的源码发上来吧。
作者: TANC    时间: 2019-12-7 15:50
算出坐标点击的时候加入数组 然后 数组_取次数 (),有相似的算一个坐标 加入的时候 到整数(),或者弄一些其他的东西具体就看你的要求了
作者: ttioo7    时间: 2019-12-7 15:51
整个多维数组,大小为屏幕像素点大小,全部写为0,然后,你点一个坐标,就把相对坐标的数组成员赋值成1(你说的相近坐标也写成1),点击先判断坐标点及附近是否为1,不知道能明白不能。
作者: ttt0410    时间: 2019-12-7 15:56
jackliuwenli 发表于 2019-12-7 15:47
试试看~

这样好像不行,相近的坐标就不能判断正确了
作者: ttt0410    时间: 2019-12-7 15:56
﹏B°o╮ 发表于 2019-12-7 15:47
把你现在点击的源码发上来吧。

点击没源码啊,直接调用的点击命令(大漠模块的)
作者: ttt0410    时间: 2019-12-7 15:57
1355568730 发表于 2019-12-7 15:50
算出坐标点击的时候加入数组 然后 数组_取次数 (),有相似的算一个坐标 加入的时候 到整数(),或者弄一些其 ...

额,我列出来的5.5的意思是X坐标5,Y坐标5,不是代表点击5.5这个坐标,点击的坐标位置都是整数
作者: ttt0410    时间: 2019-12-7 15:59
ttioo7 发表于 2019-12-7 15:51
整个多维数组,大小为屏幕像素点大小,全部写为0,然后,你点一个坐标,就把相对坐标的数组成员赋值成1(你 ...

应该理解了?

这样会不会太耗费时间和占用CPU了
作者: ttt0410    时间: 2019-12-7 16:06
ttioo7 发表于 2019-12-7 15:51
整个多维数组,大小为屏幕像素点大小,全部写为0,然后,你点一个坐标,就把相对坐标的数组成员赋值成1(你 ...

而且这样的方法来处理,好像有个漏洞
比如我要求不能重复点击超过5次,程序点击了1.1  1.1   1.1   1.1   900.900   6.300   1.1
这样不能算,但是直接计数就会算5次了
如果点击某个区域以后把区域范围之外全部次数减1,这样点击多了程序会卡死的吧
作者: jackliuwenli    时间: 2019-12-7 16:20
搞好了~

鼠标判断.e

919.72 KB, 下载次数: 1, 下载积分: 精币 -2 枚


作者: ttt0410    时间: 2019-12-7 16:35
jackliuwenli 发表于 2019-12-7 16:20
搞好了~

大哥,我感觉不好用
那个5代表范围大小对吧,坐标1和坐标2代表某个坐标被点击次数

可是现在屏幕的点至少有1920*1080吧,这点击一次判断次数也太多了,而且变量也不够放啊

在一个是,如果是1.1    20.20   2.1    20.20    1.1   20.20  1.1   20.20   1.1   20.21这样的重复咋判断
这样也是2个区域反复点击
作者: ttioo7    时间: 2019-12-7 16:40
ttt0410 发表于 2019-12-7 16:35
大哥,我感觉不好用
那个5代表范围大小对吧,坐标1和坐标2代表某个坐标被点击次数

用普通数组单纯判断XY坐标,每次要循环遍历数组,多维数组操作效率很多了

补充内容 (2019-12-7 16:40):
二维数组直接定位到坐标点就可以了
作者: ttioo7    时间: 2019-12-7 16:50
点击并记录.e (585.6 KB, 下载次数: 2)



作者: jackliuwenli    时间: 2019-12-7 16:50
ttt0410 发表于 2019-12-7 16:35
大哥,我感觉不好用
那个5代表范围大小对吧,坐标1和坐标2代表某个坐标被点击次数

你可以定义你的对比范围数组,而且判断范围你要自己调整,毕竟提供的只是方法。。。
作者: ttt0410    时间: 2019-12-7 17:15
ttioo7 发表于 2019-12-7 16:50

测试1.e (16.42 KB, 下载次数: 1)

我给写了个,测试结果看如果是连续重复的比如1.1连续重复5次,那么这个办法应该可以(不知道多次运行会不会卡慢)
如果1.1重复了4次,这时候点击了500.500,再点击1.1,那么应该不认为重复5次而不能点击

我想到的办法是每次点击把点击范围之外的全部减一,会不会太那个了
而且这样处理的话,1.1    20.20这样的连续5次,就不会认为是重复点击了,还是出错

求指教

作者: ttt0410    时间: 2019-12-7 17:17
jackliuwenli 发表于 2019-12-7 16:50
你可以定义你的对比范围数组,而且判断范围你要自己调整,毕竟提供的只是方法。。。

....这没实用性啊感觉,因为这个点击坐标不可以限定在哪个区域啊,屏幕的地方都可能被点击
没法操作这样
作者: ttioo7    时间: 2019-12-7 17:26
点击并记录2.e (588.6 KB, 下载次数: 0)

标记为1的不会点击,不会因为你点击次数收到影响,需要重新计算的时候,重定义下这个MAP数组就行了


补充内容 (2019-12-7 17:32):
源码记录了坐标范围,但是点之前没判断坐标范围,判断的是一个点,自己稍微修改下就可以了
作者: ttioo7    时间: 2019-12-7 17:29
ttt0410 发表于 2019-12-7 17:15
我给写了个,测试结果看如果是连续重复的比如1.1连续重复5次,那么这个办法应该可以(不知道多次运行 ...

别想那么复杂,没有重复几次的概念,只要重复,就不点击,范围的问题,我已经给你源码实现了
作者: ttioo7    时间: 2019-12-7 17:37
点击并记录范围.e (588.71 KB, 下载次数: 2)
判断范围,点击记录范围

作者: ttt0410    时间: 2019-12-7 17:57
ttioo7 发表于 2019-12-7 17:37
判断范围,点击记录范围

可是实际会有重复而且是正常的,比如连续点击2次A点,或者点了A点在点B,在点A在点B,这样是可以的,不可以的是反复点击,比如反复点了5次A点和B点
你能帮我看下附件吗,我在里面弄了4个按钮,里面的a,b这2个数组是我假设的鼠标X,Y点击坐标

按钮1点击后应该在第10次循环发现是在重复点击
按钮2点击后应该认为没有重复点击
按钮3点击后应该认为没有重复点击
按钮4点击后应该认为没有重复点击
按钮5点击后应该在最后一次循环发现是重复点击

但是基本都错了

测试1.e (28.27 KB, 下载次数: 1)




作者: ttt0410    时间: 2019-12-7 18:22
ttioo7 发表于 2019-12-7 17:37
判断范围,点击记录范围

我这样说你看是不是更能理解我的意思假设鼠标点击顺序为A,A,A,那么应该认为重复了3次
假设鼠标点击顺序为A,A,A,B,那么应该认为没有重复
假设鼠标点击顺序为A,A,A,B,A,A,A,B,那么应该认为重复了2次

假设鼠标点击顺序为A,B,C,A,B,C,A,B,C,那么应该认为重复了3次
假设鼠标点击顺序为A,B,C,A,B,C,A,B,C,D,那么应该认为没有重复
假设鼠标点击顺序为A,B,C,A,B,C,A,B,C,D,A,B,C,A,B,C,A,B,C,D,那么应该认为重复了2次
假设鼠标点击顺序为A,B,C,A,B,C,A,B,C,D,A,B,C,A,B,C,A,B,C,D,E,那么应该认为没有重复
假设鼠标点击顺序为A,B,B,B,那么应该认为重复了3次


这样能判断吗


补充内容 (2019-12-7 18:51):
我准备弄这个的时候是准备查找文本次数的,但是没办法把相近坐标视为同一坐标
作者: ttioo7    时间: 2019-12-7 23:27
ttt0410 发表于 2019-12-7 18:22
我这样说你看是不是更能理解我的意思假设鼠标点击顺序为A,A,A,那么应该认为重复了3次
假设鼠标点击顺序 ...

如果你的假设成立,那只有在点击完成后才能分析出来重复次数,比如

1、假设鼠标点击顺序为A,B,C,A,B,C,A,B,C,那么应该认为重复了3次
2、假设鼠标点击顺序为A,B,C,A,B,C,A,B,C,D,A,B,C,A,B,C,A,B,C,D,E,那么应该认为没有重复

1在点完的时候,他不知道还有2的后续点击,那他就认为已经重复了,那么哪来的2不重复呢

你的实际需求是不重复点击,而不是统计重复次数吧,

感觉你的逻辑上有问题,所以只能提供思路,还是要自己思考解决啊,二维数组的坐标点目前存的是一个0/1的标识符,你可以改成文本对坐标操作进行统计

作者: ttt0410    时间: 2019-12-8 00:17
ttioo7 发表于 2019-12-7 23:27
如果你的假设成立,那只有在点击完成后才能分析出来重复次数,比如

1、假设鼠标点击顺序为A,B,C,A,B,C ...

1、假设鼠标点击顺序为A,B,C,A,B,C,A,B,C,那么应该认为重复了3次
2、假设鼠标点击顺序为A,B,C,A,B,C,A,B,C,D,A,B,C,A,B,C,A,B,C,D,E,那么应该认为没有重复

1在点完的时候,他不知道还有2的后续点击,那他就认为已经重复了,那么哪来的2不重复呢

1在准备点这个c的时候,可以分析出ABC这个点击顺序会重复3次,那么我就可以判断这个重复次数是不是达到了我的预设值,然后进行对应处理(能把重复点击的坐标列出来更好,不行只有次数也行)
如果我不处理(比如报错还是怎么样),那么继续点击到2的第2个D,这个时候应该能分析出重复了2次,到E的时候分析出没有重复

我之前的想法是坐标转为文本,然后查看文本出现的次数来判断,但是这样近似的坐标就不能算一个点就不会计算重复了,不符合我要求,所以发帖询问看有没有好办法
作者: 法法发    时间: 2022-7-21 02:36
666666666666666666666666666666666666666666666666666666
作者: 法法发    时间: 2022-7-21 02:38
666666666666666666666666666666666666666666666666666666666666666666
作者: 法法发    时间: 2022-7-21 02:38

666666666666666666666666666666666666666666666666666666666666666666
作者: 法法发    时间: 2022-7-21 02:39

666666666666666666666666666666666666666666666666666666666666666666




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4