找回密码
 加入
搜索
查看: 2400|回复: 7

[AU3基础] 【已解决】如何限制快捷键在单位时间内响应次数

  [复制链接]
发表于 2011-2-18 09:04:53 | 显示全部楼层 |阅读模式
本帖最后由 touch_xu 于 2011-2-24 05:12 编辑

如题:我定义了快捷键,我想让它在10秒内最多响应3次,不能限制具体时间,只要10内不超过3次就行,谢谢
发表于 2011-2-18 10:25:18 | 显示全部楼层
我觉得可以用:TimerInit  这样可以得到上次调用时相隔多少时间, 这样你再用一个判断就行了。如果还不会, 等下给你弄个例子吧
发表于 2011-2-18 10:54:55 | 显示全部楼层
本帖最后由 happytc 于 2011-2-18 10:57 编辑

按时间来分段比较容易,如下。

#Include <Timers.au3>

Global $TimeOri = 0
Global $Count = 0
HotKeySet("^!n", "MyFunc")

While True
        Sleep(100)
WEnd

Func MyFunc()
        If $TimeOri = 0 Then 
                $TimeOri = _Timer_Init()
                $Count = 1
                MsgBox(0,"", "Start", 1)
        ElseIf _Timer_Diff($TimeOri) > 10000 Then
                MsgBox(0,"", ">10", 1)
                $Count = 1
                $TimeOri = _Timer_Init()
        ElseIf $Count <= 3 Then
                MsgBox(0,"", $Count, 1)
                $Count += 1
        ElseIf $Count > 3 Then
                Return
        EndIf
EndFunc
发表于 2011-2-18 12:23:53 | 显示全部楼层
HotKeySet("s","Myfunc")  ;注册热键 小写字母s
Global $Count=0,$Start=TimerInit()  ;定义次数变量  时间控制变量并初始化
While 1  ;创建死循环。
        Sleep(1000)  ;延迟1秒。 因为有了热键,这个消息循环基本上没什么用,延迟时间长点防CPU使用率高
        ConsoleWrite("开始了"&Int(TimerDiff($Start)/1000)&"秒"&@CRLF) ;输出程序运行了几秒  10秒一轮
WEnd

Func Myfunc()
        $Count+=1 ;首先将次数控制变量加1. 因为初始化的是0,而我们要的是3次。0到3是4次。
        If TimerDiff($Start)<10000 And $Count>3 Then Return ;若时间小于10秒且次数超过3次 则返回
        If $Count<=3 Then ConsoleWrite($Count)  ;次数小于3,输出当前次数
        If TimerDiff($Start)>10000 Then  ;大于10秒, 初始化
                $Start=TimerInit()
                $Count=0
        EndIf
EndFunc
发表于 2011-2-18 12:33:19 | 显示全部楼层
回复 4# lanfengc

你这个不就是我上面的嘛,还是用ElseIf好,少判断几次,程序执行效率高点。

其实最合理的,就判断执行次数的时间段,象“1 2 3”,“2 3 4” ,“3 4 5”……这样的
不过,这样就复杂多了
发表于 2011-2-18 12:36:34 | 显示全部楼层
  我习惯了这样写 看起来整洁。  首先判断退出条件。 然后再判断其他的,这样执行效率应该比你先判断其他的要高。
发表于 2011-2-18 13:10:58 | 显示全部楼层
回复 6# lanfengc
怎么可能呢,你这样写,注定每个if都要判断执行下,而用ElseIf的话,只要到执行中间的某个后,后面的Elseif就不用去再判断了

你这样的习惯明显把程序效率搞低多了
 楼主| 发表于 2011-2-24 05:12:32 | 显示全部楼层
谢谢各位,已经OK
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-2 14:35 , Processed in 0.078251 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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