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