Option Explicit
Public KEYEVENTF_KEYUP As IntegerPrivate Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Dim WithEvents Timer1       As Timer
Private Sub Timer1_Timer()
      If GetAsyncKeyState(vbKeyX) Then Unload Me
      If GetAsyncKeyState(vbKeyF11) Then keybd_event 65, 0, KEYEVENTF_KEYUP, 0
      If GetAsyncKeyState(vbKeyF12) Then keybd_event 65, 0, 0, 0
End Sub
Private Sub Form_Load()
      Set Timer1 = Controls.Add("vb.Timer", "Timer1")
      Timer1.Interval = 10
      Timer1.Enabled = True
End Sub我想做F12模拟按住A,F11模拟松开A

解决方案 »

  1.   

    '全局热键的设置 X 键退出Option Explicit
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Long
    Dim WithEvents Timer1 As Timer
    Private Sub Form_Load()
          Set Timer1 = Controls.Add("vb.Timer", "Timer1")
          Timer1.Interval = 10
          Timer1.Enabled = True
    End SubPrivate Sub Timer1_Timer()
          '检查是否热键被按下
          If GetAsyncKeyState(vbKeyX) Then Unload Me
          If GetAsyncKeyState(vbKeyDown) Or GetAsyncKeyState(vbKeyRight) Then Me.Caption = "您按了下或右键"
          If GetAsyncKeyState(vbKeyUp) Or GetAsyncKeyState(vbKeyLeft) Then Me.Caption = "您按了上或左键"
          If GetAsyncKeyState(vbKeyF12) Then MsgBox "您按了F12"
    End Sub
      

  2.   

    cbm666这个程序就是在上个帖子你告诉的,可是那个已经结帖了我只能另起帖问了请问,哪里错了阿?不是模拟的按住A 松开A
      

  3.   


    '低级错误
     Const KEYEVENTF_KEYUP = &H2'你的这个
    If GetAsyncKeyState(vbKeyF12) Then keybd_event 65, 0, 0, 0 
    '这样会一直按住不放的
    '3.你应该去看一下 虚拟键值表