不用Timer.改模块代码即可。
1.模块里面找到
Private lngHook As Long这一行,改成
Private lngHook As Long,oldTimer As Long
2.模块里面找到
If p.vkCode = vbKeyF10 Then
MsgBox "你按下了F10"
End If
这三行,换成:
If p.vkCode = vbKeyF10 and Timer - oldTimer > 30 Then
MsgBox "你按下了F10"
oldTimer = Timer
End If
这样你两次快捷键按下间隔小于30秒时候将不弹出对话框
用timer控件不费时,也可以不用,直接引用电脑自己的时间来判断中间是否已过去30秒.
If p.vkCode = vbKeyF10 Then
if not vbkeydownd then
OldTime=timer
VbkeyDownB=true
end if
else
if VbkeyDownB then
if (timer-oldTime)>30 then
msgbox "够30秒了"
end if
end if
VbkeyDownB=false
end if
这里需要 将 VbkeyDownB 和 OldTime 做一个 全局变量的声明
并且 看一看 timer 的格式 有的系统的 timer 为最小单位为秒 有的系统 为最小单位为毫秒 但是一般的系统都是默认最小单位为秒
最后在不上一句 这程序写的有些复杂 你大可以使用 GetAsyncKeyState 来判断 VbkeyF10键是否按下,你的方法不错很标准,不过要求不高的话可以试试 GetAsyncKeyState
Dim seconds
Private Sub Command1_Click()
Timer1.Enabled = True
Command1.Enabled = False
End Sub
Private Sub Form_Load()
seconds = 30
End Sub
Private Sub Timer1_Timer()
seconds = seconds - 1
Command1.Caption = "不可用,倒记时:" & seconds
If seconds = 0 Then
Command1.Enabled = True
Command1.Caption = "30 Second"
seconds = 30
Timer1.Enabled = False
End If
End Sub