keybd_event 能实现按下5秒不放吗?

Bob1989 2010-09-07 09:57:53
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2

Private Sub Command2_Click()
Dim a
keybd_event vbKeySpace, 0, 0, 0 '按下空格
keybd_event vbKeySpace, 0, KEYEVENTF_KEYUP, 0 '松开空格
End Sub



成功实现模拟按键空格了

现在我想中间加个延时效果,实现按空格5秒后松掉

用过sleep 5000

程序假死5秒后没下文了 空格只出来一个

结果总是失败,直接把keybd_event vbKeySpace, 0, KEYEVENTF_KEYUP, 0
删掉

他也只能按一个空格然后弹起

请问这样才能按下空格5秒不放?
...全文
201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Synwell 2012-08-29
  • 打赏
  • 举报
回复
能的。根据硬件的高低电平判断。
Bob1989 2010-09-07
  • 打赏
  • 举报
回复
问题解决了,非常感谢
getemail 2010-09-07
  • 打赏
  • 举报
回复
Private Sub Command2_Click()
Timer1.Interval = 200
Timer2.Interval = 5000
Timer1.Enabled = True
Timer2.Enabled = True
End Sub

Private Sub Form_Load()
Timer1.Enabled = False
Timer2.Enabled = False
End Sub

Private Sub Timer1_Timer()
keybd_event vbKeySpace, 0, 0, 0 '按下空格
keybd_event vbKeySpace, 0, KEYEVENTF_KEYUP, 0 '松开空格

End Sub

Private Sub Timer2_Timer()
Timer1.Enabled = False
Timer2.Enabled = False
End Sub
Bob1989 2010-09-07
  • 打赏
  • 举报
回复
keybd_event vbKeySpace, 0, 0, 0 '按下空格
sleep 5000
keybd_event vbKeySpace, 0, KEYEVENTF_KEYUP, 0 '松开空格

这样我试过了,不行的。


getemail兄能给我写个大概的程序吗?
getemail 2010-09-07
  • 打赏
  • 举报
回复
这样不行,楼主也是这么做的
应该在5秒内不停地重复

keybd_event vbKeySpace, 0, 0, 0 '按下空格
keybd_event vbKeySpace, 0, KEYEVENTF_KEYUP, 0 '松开空格

可以用2个Timer,一个不停地重复,另一个到5秒停止它


[Quote=引用 2 楼 veron_04 的回复:]
当然能,你发送按下消息,然后在延迟5秒,然后再发送弹起消息即可。
[/Quote]
贝隆 2010-09-07
  • 打赏
  • 举报
回复
当然能,你发送按下消息,然后在延迟5秒,然后再发送弹起消息即可。
getemail 2010-09-07
  • 打赏
  • 举报
回复
你要5秒内不停地按空格就是了
可以搞一个循环啊,然后判断系统是不是过了5秒,过了5秒就结束循环

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧