对于一般可见字符,不用keybd_event,象F1,Tab,NumLock,CapsLock才用 keybd_event 以下代码在text1.text上输入"a" Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)Private Sub Command1_Click() Text1.SetFocus Text1.SelStart = Len(Text1.Text) SendKeys "a" End Sub
控件如果有 IMEMODE 属性则可以按照下面办法实现:
IMEMode 属性
该属性返回或者设置的数值用来确定被选定的对象的 IME (Input Method Editor,输入方法编辑器)状态。注意 只有 Visual Basic 的远东地区版本中才会出现该属性。object.IMEMode [= value]IMEMode 属性的语法包括以下几个部分:部分 描述
object 一个对象表达式,其值为“应用于”列表中的一个对象。
value 一个整数,它指定了将要被对象使用的 IME 模式。
设置值value 的设置值包括:设置 描述
0 无(缺省设置)。该值表明“无 IME 控制”。当 IMEMode 属性被设置为 0 时,可以使用 IMEStatus 函数确定当前的 IME 状态。
1 IME 打开。该数值表明 IME 已经被打开,可以输入汉字或日文字符。该设置仅对日文、简体汉字和繁体汉字 IME 有效。
2 IME 关闭。该模式表明 IME 被关闭,因此对象将处于英文输入模式。该设置仅对日文、简体汉字和繁体汉字 IME 有效。
3 IME 被禁止。该模式类似于 IMEMode = 2,区别仅在于数值 2 没有禁止 IME。在本设置下,用户不能够通过键盘将 IME 打开,而且 IME 浮动窗口被隐藏。该设置仅对日文 IME 有效。
4 日文平假名双字节字符(DBC)。该设置仅对日文 IME 有效。
5 日文片假名 DBC. 这些设置仅对日文 IME 有效。
6 日文片假名单字节字符 (SBC)。这些设置仅对日文 IME 有效。
7 字母数字 DBC。该些设置仅对日文 IME 有效。
8 字母数字 SBC。该些设置仅对日文 IME 有效。
9 Hangeul DBC。该些设置仅对朝鲜语 IME 有效。
10 Hangeul SBC。该些设置仅对朝鲜语 IME 有效。
说明在设计时,可以使用对象的“属性”窗口来设置对象的 IMEMode 属性。在运行时,可以通过代码返回或者设置 IMEMode 属性。如果对象拥有焦点的时候改变了 IMEMode 属性的设置,对象的 IME 状态将发生相应的改变。如果将 IMEMode 属性设置为 0 (无),那么无论对象的当前状态如何设置,结果总是返回 0。如果将 IMEMode 属性设置为 0 以外的任何有效值, IMEMode 属性将返回当前的 IME 状态。对于日文 IME,只能使用设置值 0 到 8。设置 9 和 10 对于日文系统是无效的。对于朝鲜语 IME,只能使用设置 0 以及 7 到 10。设置 1 到 6 对于朝鲜语系统是无效的。对于简体汉字和繁体汉字 IME,只能使用设置 0 到 2。设置 3 到 10 对于汉字系统是无效的。
要使用软键盘,最笨的办法就是设计一个frm,上面放置多个按钮,每一个按钮点击的时候给一个KeyAscii值。
比如,按钮"A",要在text1.text中显示A
TEXT1.TEXT=TEXT1.TEXT & "A"
或 sendkeys 或API的keybd_event函数模拟按键,
如按下NumLock:(两行)
keybd_event vbKeyNumlock,0,0,0
keybd_event vbKeyNumlock,0,2,0
以下代码在text1.text上输入"a"
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)Private Sub Command1_Click()
Text1.SetFocus
Text1.SelStart = Len(Text1.Text)
SendKeys "a"
End Sub