怎样用api实现
一个textbox。修改其MultiLine为true,两个按纽
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Private Const VK_ADD = &H6B
Private Const VK_TAB = &H9
Private Sub Command1_Click()
Text1.SetFocus
keybd_event VK_TAB, 0, 0, 0 press tab
keybd_event VK_TAB, 0, KEYEVENTF_KEYUP, 0 release tab
End Sub
Private Sub Command2_Click()
Text1.SetFocus
keybd_event VK_ADD, 0, 0, 0 press +
keybd_event VK_ADD, 0, KEYEVENTF_KEYUP, 0 release +
keybd_event VK_TAB, 0, 0, 0 press tab
keybd_event VK_TAB, 0, KEYEVENTF_KEYUP, 0 release tab
End Sub
Private Sub Form_Load()
Me.Command1.TabStop = False
Me.Command2.TabStop = False
End Sub
Sendkeys太菜,用API吧!
附上老外的例程一段,自己研究吧,很简单的.... :)
Const VK_H = 72
Const VK_E = 69
Const VK_L = 76
Const VK_O = 79
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Sub Form_KeyPress(KeyAscii As Integer)
Print the key on the form
Me.Print Chr$(KeyAscii);
End Sub
Private Sub Form_Paint()
KPD-Team 2000
URL: http://www.allapi.net/
E-Mail: KPDTeam@Allapi.net
Clear the form
Me.Cls
keybd_event VK_H, 0, 0, 0 press H
keybd_event VK_H, 0, KEYEVENTF_KEYUP, 0 release H
keybd_event VK_E, 0, 0, 0 press E
keybd_event VK_E, 0, KEYEVENTF_KEYUP, 0 release E
keybd_event VK_L, 0, 0, 0 press L
keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0 release L
keybd_event VK_L, 0, 0, 0 press L
keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0 release L
keybd_event VK_O, 0, 0, 0 press O
keybd_event VK_O, 0, KEYEVENTF_KEYUP, 0 release O
End Sub
下面是你要的代码,不过不知道你要实现怎样的功能?还有,我查了一下MSDN,它写到2000/XP以上的OS用SendInput替代了keybd_event,SendInput能够控制numlock键,keyby_event不能。
================================================================================
Option Explicit
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const VK_SHIFT As Long = &H10
Private Const VK_CONTROL As Long = &H11
Private Sub Form_Load()
keybd_event VK_SHIFT, 0, 0&, 0&
keybd_event VK_CONTROL, 0, 0&, 0&
do sth
keybd_event VK_SHIFT, 0, 2&, 0&
keybd_event VK_CONTROL, 0, 2&, 0&
End Sub
keybd_event VK_SHIFT, 0, 0&, 0&
keybd_event VK_CONTROL, 0, 0&, 0&
这是发送的组合键啊,再在后面用keybd_event发送一个按键松开的API,就相当于按了组合键后松开咯