当前位置:编程学习 > VB >>

VB按键触发

我用VB写了一个自动按键小程序,我想给它设定个启动热键,就是打开窗体后程序不工作,只有当按了ALT+X后才进行自动按键工作,具体代码如下:

Private Sub Form_Load()

    Timer1.Interval = 500
    Timer1.Enabled = True

End Sub

Private Sub Timer1_Timer()
    SendKeys "{x}"
    SendKeys "{down}"
    SendKeys "{x}"
End Sub

另外我想给这个程序的窗体上加个文本框,用来输入计时器控件的毫秒数,如何来做,请高人指点,我是新手,向往学习,谢谢!

答案:用API吧

按一次开启,再按停止

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Sub Form_Load()
    Timer2.Interval = 10
    Timer2.Enabled = True
    Timer1.Enabled = False '程序启动时处于停止状态
    Text1 = 1000 '默认1秒发送一次按键
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii <> 8 And (KeyAscii < 48 Or KeyAscii > 57) Then KeyAscii = 0 '文本框只能输入数字
End Sub

Private Sub Text1_Change()
Text1 = Val(Text1) '文本框内粘贴入其他字符时转化为数字
End Sub

Private Sub Timer1_Timer()
    SendKeys "{x}"
    SendKeys "{down}"
    SendKeys "{x}"
End Sub


Private Sub Timer2_Timer()
If GetKeyState(18) <> 0 And GetKeyState(88) <> 0 Then '按下AIT+X
    Timer1.Interval = Text1
    Timer1.Enabled = Not Timer1.Enabled
End If
End Sub

最好是这样:

你可以通过Timer1.Interval = val(Text1.Text)实现啊

我认为你的设计思路有问题

定义一个局部变量Bool类型ISCanWork=false

采用window消息事件,捕获按键,如果按键="Alt+X",那么将ISCanWork=true;

所有事件前判断ISCanWork是否为true,如果不是,则退出事件。

另外,还有一种方法,在按这个组合键前,窗体.enable=false,按键后设置为true

上一个:VB 代码请教
下一个:vb的编程!

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,