中午好!这个程序的选型时这样的,我从网上抄来的,测试下了没有问题后用在我的程序中, Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Dim key1 As Integer, key2 As Integer, key3 As Integer Const keycode1 As Integer = 121 '按下【F10】的键码是 121 Const keycode2 As Integer = 122 '按下【F11】的键码是 122 Const keycode3 As Integer = 123 '按下【F12】的键码是 123 Private Sub Form_Load() key1 = GetKeyState(keycode1) key2 = GetKeyState(keycode2) key3 = GetKeyState(keycode3) Timer1.Interval = 100 Timer1.Enabled = True 'Me.Visible = False '这句根据需要选用 End Sub Private Sub Timer1_Timer() If GetKeyState(keycode1) <> key1 Then '这里写你需要的开始语句,主程序可以写在另一个过程中,在这里调用就可以了 MsgBox "启动" key1 = GetKeyState(keycode1) End If If GetKeyState(keycode2) <> key2 Then '这里写暂停指令,暂停就是让计时器停止走动,即Timer1.Enabled = False MsgBox "暂停" key2 = GetKeyState(keycode2) End If If GetKeyState(keycode3) <> key3 Then '这里写停止命令,停止当然就是结束程序,否则跟暂停有什么区别呢 MsgBox "停止" key3 = GetKeyState(keycode3) End If ======================================================================== 所谓的“按F12停不了”是什么表现? 如果是指 Timer 没停,因为你的确没有在 F12 中关 Timer。回答:我的本意是按F12后去执行stop_Click(),停止串口,用"end"停止程序。 ======================================================== 又1回答:这个我的想法是按键状态变化就是跳到start_Click,因为是热键就按一次,抓到释放也好按下也好,都是按键动作,都可以呗。也不知道这想法对不对,但是在上面传的原型上吗,可以很好的执行。 又2回答:这个暂停还没用上,呵呵。 =================谢谢
如果是指 Timer 没停,因为你的确没有在 F12 中关 Timer。又1:按键判断有问题。比如
F10 按下,状态变化,调用 start_Click
F10 释放,状态变化,又调用 start_Click又2:暂停按钮是什么?
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Dim key1 As Integer, key2 As Integer, key3 As Integer
Const keycode1 As Integer = 121 '按下【F10】的键码是 121
Const keycode2 As Integer = 122 '按下【F11】的键码是 122
Const keycode3 As Integer = 123 '按下【F12】的键码是 123
Private Sub Form_Load()
key1 = GetKeyState(keycode1)
key2 = GetKeyState(keycode2)
key3 = GetKeyState(keycode3)
Timer1.Interval = 100
Timer1.Enabled = True
'Me.Visible = False '这句根据需要选用
End Sub
Private Sub Timer1_Timer()
If GetKeyState(keycode1) <> key1 Then
'这里写你需要的开始语句,主程序可以写在另一个过程中,在这里调用就可以了
MsgBox "启动"
key1 = GetKeyState(keycode1)
End If
If GetKeyState(keycode2) <> key2 Then
'这里写暂停指令,暂停就是让计时器停止走动,即Timer1.Enabled = False
MsgBox "暂停"
key2 = GetKeyState(keycode2)
End If
If GetKeyState(keycode3) <> key3 Then
'这里写停止命令,停止当然就是结束程序,否则跟暂停有什么区别呢
MsgBox "停止"
key3 = GetKeyState(keycode3)
End If
========================================================================
所谓的“按F12停不了”是什么表现?
如果是指 Timer 没停,因为你的确没有在 F12 中关 Timer。回答:我的本意是按F12后去执行stop_Click(),停止串口,用"end"停止程序。
========================================================
又1回答:这个我的想法是按键状态变化就是跳到start_Click,因为是热键就按一次,抓到释放也好按下也好,都是按键动作,都可以呗。也不知道这想法对不对,但是在上面传的原型上吗,可以很好的执行。
又2回答:这个暂停还没用上,呵呵。
=================谢谢
只需要先停止 Timer,然后 Unload Me。
MSComm1 会在卸载时自动关闭。按键状态应该是 0 => 1 时按下吧, 1 => 0 的时候可以跳过。