递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
楼主: 雅婷
打印 上一主题 下一主题

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

[复制链接]

76

主题

362

帖子

1244

积分

金牌会员

Rank: 6Rank: 6

积分
1244
11#
 楼主| 发表于 2021-9-2 08:38:43 | 只看该作者
kamikaze 发表于 2021-9-2 00:20
直接鼠标钩子 即可

能详细一点吗,我用在侧键上的,想在侧键实现双击,或者利用键盘上的微标键 实现双击打开我的电脑功能,双击不能和原来的单击有冲突,意思是检测到双击动作就得屏蔽原来的单击事件,只输出双击动作,我今天看到有人推荐用 取启动时间()命令 ,但是好像会冲突 ,单击和双击的功能重叠了

看下如下代码哪里有问题
  1. .版本 2
  2. .支持库 spec

  3. .子程序 输出次数, 整数型, 公开
  4. .参数 键代码, 整数型
  5. .局部变量 上次键代码_局, 整数型, 静态
  6. .局部变量 上次时间_局, 整数型, 静态
  7. .局部变量 累计_局, 整数型, 静态
  8. .局部变量 次数_局, 文本型
  9. .局部变量 返回值, 整数型


  10. .如果 (上次键代码_局 ≠ 键代码)
  11.     上次键代码_局 = 键代码
  12.     上次时间_局 = 取启动时间 ()
  13.     ' 时钟1.时钟周期 = 10
  14.     ' 定时器设定值 = 10
  15.     输入时间ID = 集_按键.建立定时器 (10, &微标键反馈事件)


  16. .否则
  17.     .判断开始 (取启动时间 () - 上次时间_局 < 600)

  18.         累计_局 = 累计_局 + 1
  19.         输出调试文本 (“双击” + 到文本 (累计_局))
  20.         上次键代码_局 = 0
  21.         次数_局 = “双击”

  22.     .默认
  23.         上次时间_局 = 取启动时间 ()
  24.         输入时间ID = 集_按键.建立定时器 (10, &微标键反馈事件)
  25.         ' 时钟1.时钟周期 = 10
  26.         ' 输出调试文本 (“单击”)
  27.         次数_局 = “单击”
  28.     .判断结束

  29. .如果结束
  30. .判断开始 (次数_局 = “双击”)
  31.     返回值 = 2
  32.     ' 模拟按键 (91, #E键, )



  33. .默认
  34.     返回值 = 0
  35.     调试输出 (“按了回车键”)
  36. .判断结束

  37. 返回 (返回值)
复制代码
回复

使用道具 举报

0

主题

3

帖子

10

积分

新手上路

Rank: 1

积分
10
12#
发表于 2021-9-2 11:19:35 | 只看该作者
雅婷 发表于 2021-9-2 08:27
好家伙,你这变成按键连点器了!!真是猝不及防啊,根本不是想要的效果,按照你这个方式写的,按一下微 ...

你真棒,抄都没抄好,直接上代码吧
N击事件.zip (24.75 KB, 下载次数: 4)
回复

使用道具 举报

30

主题

127

帖子

512

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
512
13#
发表于 2021-9-2 17:36:11 | 只看该作者
雅婷 发表于 2021-9-1 16:40
我其实是想一个键 实现单击、双击、三击及长按某键功能,关键就卡在不知道怎么识别这三个状态,而且我写 ...

单击 双击 三级 都会混淆的你要自己判断

单击有单击事件

双击有的有事件 有的组件没有

三级自己从单击+双击里面判断

至于按住不放这种识别  你可以使用按下与放开这2个事件
回复

使用道具 举报

76

主题

362

帖子

1244

积分

金牌会员

Rank: 6Rank: 6

积分
1244
14#
 楼主| 发表于 2021-9-2 21:00:36 | 只看该作者
叮咚茶 发表于 2021-9-2 11:19
你真棒,抄都没抄好,直接上代码吧

刚看了,谢谢 效果确实有,但我不是用在按钮上的,而是用在键盘钩子捕获的按键上的,比如我想把左微标键(键代码91 和92)屏蔽掉,改成你这个N击和长按事件,每个输出是事件不能重叠冲突(其实最多3击就够了,多了我怕会出现不同状态下的功能重叠冲突,如果能避免当然更好)
回复

使用道具 举报

76

主题

362

帖子

1244

积分

金牌会员

Rank: 6Rank: 6

积分
1244
15#
 楼主| 发表于 2021-9-2 21:09:52 | 只看该作者
kamikaze 发表于 2021-9-2 00:20
直接鼠标钩子 即可

能详细一点吗?我想用键盘钩子 把左微标键屏蔽掉然后改成单击双击 和长按事件,功能不能有重叠冲突,如果键盘实现了 就套用在鼠标上(把微标键改成单击切换下一曲 键代码176 双击 切换上一曲 键码 177  三击 微标键 暂停播放 长按 微标键打开我的电脑 键码 91 + 69 类似线控耳机那样的效果)
回复

使用道具 举报

76

主题

362

帖子

1244

积分

金牌会员

Rank: 6Rank: 6

积分
1244
16#
 楼主| 发表于 2021-9-2 21:11:09 | 只看该作者
叮咚茶 发表于 2021-9-2 11:19
你真棒,抄都没抄好,直接上代码吧

我其实想用键盘钩子 把左微标键屏蔽掉然后改成单击双击 和长按事件,功能不能有重叠冲突,如果键盘实现了 就套用在鼠标上(把微标键改成单击切换下一曲 键代码176 双击 切换上一曲 键码 177  三击 微标键 暂停播放 长按 微标键打开我的电脑 键码 91 + 69 类似线控耳机那样的效果)
回复

使用道具 举报

76

主题

362

帖子

1244

积分

金牌会员

Rank: 6Rank: 6

积分
1244
17#
 楼主| 发表于 2021-9-2 22:08:09 | 只看该作者
1185907650 发表于 2021-9-1 16:32
不需要这么麻烦,http://bbs.voldp.com/forum.php?mod=viewthread&tid=6837&highlight=%E6%97%B6%E9%92%9F  ...

我其实想用键盘钩子 把左微标键屏蔽掉然后改成单击双击 和长按事件,功能不能有重叠冲突,如果键盘实现了 就套用在鼠标上(把微标键改成单击切换下一曲 键代码176 双击 切换上一曲 键码 177  三击 微标键 暂停播放 长按 微标键打开我的电脑 键码 91 + 69 类似线控耳机那样的效果)
回复

使用道具 举报

76

主题

362

帖子

1244

积分

金牌会员

Rank: 6Rank: 6

积分
1244
18#
 楼主| 发表于 2021-9-3 01:00:49 | 只看该作者
本帖最后由 雅婷 于 2021-9-3 01:22 编辑
叮咚茶 发表于 2021-9-2 11:19
你真棒,抄都没抄好,直接上代码吧
发个网盘给你吧(截图是9.3号那个压缩包里的)链接:https://pan.baidu.com/s/1GSMWjG6WW8-VMqnZNZe_wA
提取码:0000
在吗?  我把你的按钮判断改成按键判断 如下代码没有任何作用了,按了没反应 你看下哪里出了问题呀?

  1. .版本 2
  2. .支持库 spec

  3. .子程序 键盘钩子回调函数, 整数型, , 回调函数是钩子里最重要的东西
  4. .参数 参数一
  5. .参数 按键状态
  6. .参数 键值
  7. .局部变量 按键信息, 按键信息
  8. .局部变量 声音文件_局, 文本型
  9. .局部变量 局部_单击次数, 整数型
  10. .局部变量 窗口句柄, 整数型
  11. .局部变量 时钟id, 整数型
  12. .局部变量 按键时间, 整数型
  13. .局部变量 比较按钮, 整数型

  14. ' 目标按键代码 = 取代码 (编辑框1.内容, ) - 32
  15. ' 目标按键代码 = 取代码 (“174”, ) - 32
  16. ' 目标按键代码 = 8
  17. 取键键码_钩子 = 取字节集数据 (指针到字节集 (键值, 1), #整数型, )  ' 把指针转换成键值,键值取出来了想怎么玩怎么玩
  18. 全局_按键状态 = 按键状态
  19. 定时器设定值 = 60
  20. ' 调试输出 (取键键码_钩子)

  21. 集_时间2 = 0
  22. 是否超时 = “未超时”

  23. 停止长按 = 假
  24. 是否双击 = 假
  25. 窗口句柄 = 0
  26. .如果真 (取键键码_钩子 = #WIN键)  ' 退格键 键码91
  27.     调试输出 (“微标键按下,键码:”, #WIN键)
  28.     .判断开始 (微标键切换模式.选中 = 真)
  29.         .判断开始 (按键状态 = #按键按下)  ' 按下
  30.             调试输出 (“微标键按下,键码:”, #WIN键)
  31.             ' 多次点击.连点器 (取键键值)
  32.             销毁时钟_ (窗口句柄, #按键按下)  ' //  #ID_TIME_MOUSE_CLICKDOWN = 2
  33.             销毁时钟_ (窗口句柄, #按键抬起)  ' //#ID_TIME_MOUSE_CLICKUP = 3
  34.             时钟id = 设置时钟 (0, 按键状态, 260, 0)
  35.         .判断 (按键状态 = #按键抬起)  ' 按下
  36.             调试输出 (“微标键抬起,键码:”, #WIN键)
  37.             ' 多次点击.连点器 (取键键值)
  38.             销毁时钟_ (窗口句柄, #按键按下)  ' //  #ID_TIME_MOUSE_CLICKDOWN = 2
  39.             销毁时钟_ (窗口句柄, #按键抬起)  ' //#ID_TIME_MOUSE_CLICKUP = 3
  40.             时钟id = 设置时钟 (窗口句柄, 按键状态, 260, 0)
  41.             按键时间 = 按键时间 + 1
  42.         .判断 (按键状态 ≠ #按键抬起)  ' 按下 #系统定时器
  43.             销毁时钟_ (窗口句柄, #按键抬起)  ' 原wParam
  44.             .判断开始 (#按键抬起 = #按键按下)  ' 判断 (wParam = #按键按下)
  45.                 获取按键点击 (按键时间)
  46.                 按键时间 = -1
  47.             .判断 (#按键抬起 = #按键抬起)  ' 判断 (wParam = #按键按下)
  48.                 .如果真 (按键时间 > 0)
  49.                     获取按键点击 (按键时间)
  50.                 .如果真结束
  51.                 按键时间 = 0
  52.             .默认

  53.             .判断结束
  54.             返回 (呼叫窗口函数地址 (比较按钮, 窗口句柄, 按键状态, #按键抬起, #按键按下))

  55.         .默认

  56.         .判断结束

  57.     .默认

  58.     .判断结束

  59. .如果真结束
  60. <blockquote>  
复制代码

是.png (46.28 KB, 下载次数: 38)

是.png

2021.9.3鼠标侧键-新增模式切换功能-有问题未修复.zip

414.04 KB, 下载次数: 0

回复

使用道具 举报

1

主题

118

帖子

2569

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2569
19#
发表于 2021-9-3 01:38:55 | 只看该作者
我去,还没弄好呢,大家都给了你思路了,你应该早搞好了的,还有你还在用时钟,你知道它的特性吗,并不适合你现在的功能,其实你用了钩子,完全可以实现你要的功能了,时间判断也并不需要时钟来操作。
回复

使用道具 举报

1

主题

118

帖子

2569

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2569
20#
发表于 2021-9-3 03:54:10 | 只看该作者






看看是不是你想要的,不用时钟。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 17:19 , Processed in 0.110896 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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