简单问题:如何判断同一个键在500ms内被按下2次?
用途:双击小键盘0键,启动某个事件:60为小键盘0键$dll = DllOpen("user32.dll")If _IsPressed("60", $dll) Then $mark = 1
TrayTip("",$mark,30,1)
DllClose($dll)
;Sleep(2000)
If $mark = 1 Then
$dll = DllOpen("user32.dll")
$begin = TimerInit()
Do
If _IsPressed("60", $dll) Then
;MsgBox(0, "TEST内", TimerDiff($begin)&@CRLF&_IsPressed("60", $dll))
TrayTip("", TimerDiff($begin) & @CRLF & _IsPressed("60", $dll), 30, 1)
;DllClose($dll)
;ExitLoop
Else
TrayTip("", "NO-KEY", 30, 1)
EndIf
Until TimerDiff($begin) > 2500
上述思路居然不成,因为DO循环检测的还是第1次按下的小键盘0键。 #Include <Misc.au3>
$begin = TimerInit()
$dll = DllOpen("user32.dll")
While 1
If _IsPressed("60",$dll) Then
If TimerDiff($begin) < 500 Then
$begin = TimerInit()
MsgBox(0,0,"你快速按了两次0")
Else
$begin = TimerInit()
EndIf
EndIf
Sleep(100)
WEnd
DllClose($dll)
貌似有BUG,检测为500毫秒,但延迟却100,请自测 可以,不过相当麻烦,用*Performance*api 可以精确到500微秒(好象是) 这个有用处 学习 就是精确度问题 学习 timediff自己误差就挺大的吧! 本帖最后由 netegg 于 2011-9-12 18:54 编辑
楼主可以看看下面这个函数
#Include <WinAPIEx.au3>
_WinAPI_ZwDelayExecution
页:
[1]