急求一段连按程序
例如,单按一下回车,会变成连按固定次数。急求 --------------------编程问答-------------------- keyboard hooksendkeys --------------------编程问答-------------------- 楼上,可以详细点,吗? --------------------编程问答-------------------- 把窗体的KeyPreview属性设为True
试一下下面的代码行不行?
Private Sub Form_Keypress(KeyAscii As Integer)
Dim n As Integer '连按固定次数
Dim i As Integer
n = 5
'按下回车,连按5次
If KeyAscii = vbKeyReturn Then
For i = 1 To n
SendKeys "{enter}"
Next i
End If
End Sub
--------------------编程问答-------------------- lz的不用这么复杂,把按钮中的代码放到一个过程中,然后在按钮中循环调用就可以了 --------------------编程问答-------------------- 3楼的程序会造成死循环的,因为当你连续sendkeys,第3下又会造成keypress事件,从新循环。。 --------------------编程问答-------------------- Private m_bFlag As Boolean
Private Sub Form_Load()
m_bFlag = False
End Sub
Private Sub Form_Keypress(KeyAscii As Integer)
Dim n As Integer '连按固定次数
Dim i As Integer
n = 5
If m_bFlag = False Then
m_bFlag = True
'按下回车,连按5次
If KeyAscii = vbKeyReturn Then
For i = 1 To n
SendKeys "{enter}"
Next i
End If
m_bFlag = False
End If
End Sub
这样再试下行不? --------------------编程问答-------------------- 楼上还是会造成死循环的,你的布尔变量没起到作用,当固定五次的第五次enter作为实参和keyascii形参结合再次进入keypress事件后m_bFlag在上一轮已被置为FALSE,和你form load事件作用相同,再次进入以m_bFlag = False 为条件的循环 --------------------编程问答-------------------- 如果我想用来作第三方软件使用,例如在记事本实现连按功能,显然用form的keypress事件是不能的,应该怎么办? --------------------编程问答-------------------- 这样试下
Private m_bFlag As Boolean
Private Sub Form_Load()
m_bFlag = False
End Sub
Private Sub Form_Keypress(KeyAscii As Integer)
Dim n As Integer '连按固定次数
Dim i As Integer
Print "按了一次回车键"
If m_bFlag = False Then
m_bFlag = True
n = 5
'按下回车,连按5次
If KeyAscii = vbKeyReturn Then
For i = 1 To n
Form_Keypress (vbKeyReturn)
Next i
End If
m_bFlag = False
End If
End Sub
--------------------编程问答-------------------- 用来作第三方软件使用,这个就要用到系统API了。你可以这样:
1.用FindWindow找到要控制的窗体的句柄
2.然后向这个窗体的句柄发送键盘消息
或者
1.用FindWindow找到要控制的窗体的句柄
2.用SetForegroundWindow将该窗口激活
3.用SendKeys模拟按键 --------------------编程问答-------------------- 要是自己用的话,就用按键精灵吧。没必要专门写个程序
补充:VB , 基础类