递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 11971|回复: 31
打印 上一主题 下一主题

[视窗] 火山pc怎样让时钟周期SetTimer记录一次循环等待超时就销毁?

[复制链接]

75

主题

363

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
跳转到指定楼层
楼主
发表于 2021-9-1 15:38:53 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式

易语言火山怎样让SetTimer时钟周期记录一次循环超时等待无输入就自动销毁,从而实现识别到2秒内敲击了两次相同按键的效果?(在2秒内如果识别到第二次敲击就立即销毁等待下一次激活输入,如果不自动销毁 时钟会一直在后台运行可能会占用系统资源)


以下是我的错误思路示范,不知道哪里错了:

.版本 2
.支持库 spec

.子程序 微标键周期反馈事件

限时器 = 20


.判断开始 (定时器设定值 ≠ 0)  ' 在一开始判断给定的时钟周期是否等于0
    ' 调试输出 (“时钟循环”, 集_计时器, “次”)
    .判断开始 (集_计时器 < 限时器)  ' 解释:集_计时器 用来记录这个时钟循环了多少次,循环小于30次,且次数不能大于给定的目标 5次
        ' 调试输出 (“这是一个api时钟反馈周期,用于反馈微标键的操作事件----------------------------”)
        集_计时器 = 集_计时器 + 1  ' 没有达到目标就每循环一次都加1次,累计次数
        调试输出 (“时钟循环”, 集_计时器, “次”)
        .如果真 (集_计时器 ≥ 30)
            ' 是否销毁时钟 = 销毁时钟_ (0, 0)
        .如果真结束



    .判断 (集_计时器 ≥ 30)  ' 如果 大于 限时器 设置的目标,但是小于 集_计时器的30次数,则来到这里
        ' 调试输出 (“===========限时器 ----4毫秒内算双击=========”, 限时器)
        ' 调试输出 (“目标是” + 到文本 (限时器) + “已经超时”, , “但循环还没超时”)
        调试输出 (“集_计时器 > 限时器,值为:”, 集_计时器)
        ' 集_计时器 = 0
        ' 是否销毁时钟 = 销毁时钟_ (0, 0)
        .' 如果真 (是否销毁时钟 = 假)

            ' 销毁时钟_ (0, 0)
            ' 定时器设定值 = 0
            ' 集_计时器 = 0

        .如果真结束


        .判断开始断 (单击次数.次数 < 3)
            ' 单击次数.次数 = 1
            ' 单击次数.次数 = 单击次数.次数 + 1
            ' 调试输出 (“按下了中键”, )

        .默认

        .判断结束



    .' 判断 (集_计时器 > 限时器)  ' 如果 时钟循环的次数 大于目标 限时器 的值
        ' 单击次数.次数 = 0
        ' ' 调试输出 (“===========限时器 ----4毫秒内算双击=========”, 限时器)
        ' 调试输出 (“集_计时器 > 限时器,值为:”, 集_计时器)

        ' 是否销毁时钟 = 销毁时钟_ (0, 0)
        .' 如果真 (是否销毁时钟 = 假)
            ' 销毁时钟_ (0, 0)
            ' 定时器设定值 = 0
        .如果真结束

    .默认

    .判断结束
    ' 调试输出 (“全局_要模拟的按键”, 全局_要模拟的按键, “单击次数.次数”, 单击次数.次数, “集_计时器 ”, 集_计时器, “限时器”, 限时器, “销毁时钟”, 是否销毁时钟)


.默认
    ' 是否销毁时钟 = 销毁时钟_ (0, 0)
    .' 如果真 (是否销毁时钟 = 假)
        ' 销毁时钟_ (0, 0)
        ' 定时器设定值 = 0


(为啥我的问题都没人回答呢? 是这个论坛没人太冷清还是大佬都懒得回答小白的问题呀?我发了五六篇类似的问题好多天都没人回答,都石沉大海了,不是说这里都是大佬聚集地吗?这样逛论坛根本没办法自学学习到有用的知识哦,好烦)

回复

使用道具 举报

75

主题

363

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
32#
 楼主| 发表于 2021-9-5 11:45:27 | 只看该作者
本帖最后由 雅婷 于 2021-9-5 11:47 编辑
qaz2428119 发表于 2021-9-4 20:05
你这是求助还是定制?
你首先要搞明白

我已经搞定了,谢谢你的参与和解答,我不应该把我的用途说出来的,那样感觉我废话有点多有点影响你们理解了,我只需要说怎么实现这个功能就行的,至于实现后用来干嘛这事不用你们操心了,(但我不说用途我又怕你们理解错误,会问我为啥非要实现这个功能之类的)
回复

使用道具 举报

25

主题

497

帖子

1806

积分

金牌会员

Rank: 6Rank: 6

积分
1806
31#
发表于 2021-9-4 20:05:33 | 只看该作者
你这是求助还是定制?
你首先要搞明白
回复

使用道具 举报

75

主题

363

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
30#
 楼主| 发表于 2021-9-4 13:54:03 | 只看该作者
mudou 发表于 2021-9-3 03:54
看看是不是你想要的,不用时钟。

用12楼那个大神的代码把返回 (CallWindowProc (oldButtonProc, hwnd, wMsg, wParam, lParam)),换成“ 返回 (调用下一个钩子 (键盘钩子1, 代码, 按键状态, 钩子键值)) CallNextHookEx后面的参数应该怎么填写?主要是 它的返回参数有5个,而我这个键盘钩子只有四个参数
回复

使用道具 举报

75

主题

363

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
29#
 楼主| 发表于 2021-9-4 13:51:39 | 只看该作者
叮咚茶 发表于 2021-9-2 11:19
你真棒,抄都没抄好,直接上代码吧


如果把返回 (CallWindowProc (oldButtonProc, hwnd, wMsg, wParam, lParam)),换成“ 返回 (调用下一个钩子 (键盘钩子1, 代码, 按键状态, 钩子键值)) CallNextHookEx后面的参数应该怎么填写?主要是 你的返回参数有5个,而我这个键盘钩子只有四个参数
回复

使用道具 举报

75

主题

363

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
28#
 楼主| 发表于 2021-9-3 20:20:52 | 只看该作者
本帖最后由 雅婷 于 2021-9-3 20:23 编辑
叮咚茶 发表于 2021-9-2 11:19
你真棒,抄都没抄好,直接上代码吧

那个按钮n击的按钮有四五个参数 改成按键钩子后 “返回 (呼叫窗口函数地址 (比较按钮, 窗口句柄, 状态, wParam, lParam))”命令的一二参数和四五参数返回值不知道怎么填了,因为按键钩子没有这些参数,只有按下和抬起,有些参数还是我猜的,尤其是wParam,lParam 两个参数在按键按下时候 怎么获取呢?还有第一个参数也有点莫名其妙,不知道要比较什么
回复

使用道具 举报

75

主题

363

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
27#
 楼主| 发表于 2021-9-3 19:59:55 | 只看该作者
本帖最后由 雅婷 于 2021-9-3 20:17 编辑
mudou 发表于 2021-9-3 16:52
你不是要用鼠标来操作的吗,又改键盘了?

鼠标只是引出例子,相当于抛砖引玉,不能只限于鼠标啊,关键我想要的是键盘也能用,通常来说如果键盘能用的话鼠标一般就能通用,但鼠标能用的键盘不一定能用,因为鼠标获取的钩子按键好像是单次输出,键盘钩子获取的按键是只要按住没抬起来就一直是输出的状态,尤其是已经有默认集成双击的功能,我记得甚至还有个api只要调用这个api就能获得双击的动作,但键盘能双击三击长按操作的我没见过,也没人集成这样的命令,再有就是我怕大家不仔细看问题的大佬会误导一看到鼠标和多次点击连想起来就以为是要做鼠标连点器,或按钮连点器,就一股脑儿不问缘由的推荐我用按键精灵,实际上5楼那位大神就已经被误导了,我想要的是按键操作,他理解成鼠标点按钮的操作了,他的那个按钮n击改成按键钩子后 “返回 (呼叫窗口函数地址 (比较按钮, 窗口句柄, 状态, wParam, lParam))”命令的一二参数和四五参数返回值不知道怎么填了,因为按键没有这些参数,只有按下和**起
回复

使用道具 举报

1

主题

113

帖子

2449

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2449
26#
发表于 2021-9-3 17:18:34 | 只看该作者
雅婷 发表于 2021-9-3 11:08
在吗?刚试了你这个代码,我觉得我们调试环境可能不一样,(我用的是键盘钩子,当按下某键后按键会一直输 ...

你是局部变量吧
回复

使用道具 举报

1

主题

113

帖子

2449

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2449
25#
发表于 2021-9-3 16:52:19 | 只看该作者
你不是要用鼠标来操作的吗,又改键盘了?
回复

使用道具 举报

75

主题

363

帖子

1222

积分

金牌会员

Rank: 6Rank: 6

积分
1222
24#
 楼主| 发表于 2021-9-3 11:08:56 | 只看该作者
mudou 发表于 2021-9-3 03:54
看看是不是你想要的,不用时钟。

在吗?刚试了你这个代码,我觉得我们调试环境可能不一样,(我用的是键盘钩子,当按下某键后按键会一直输出结果,**起时才会停止输出)你这个在我这还是没达到效果,因为我这里测试发现任何时候都会识别成双击,单击直接没了,长按还必须要和别的按键组合才行,我需要的是一个键实现 单击双击 或三击 和长按 这四个功能,而不依赖组合键

2021.9.3鼠标侧键-新增模式切换功能-有问题未修复-用启动时间(火山).zip.zip

415.09 KB, 下载次数: 0

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-9-27 08:37 , Processed in 0.095354 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表