ToAscii, ToAsciiEx

VB声明
Declare Function ToAscii& Lib "user32" (ByVal uVirtKey As Long, ByVal uScanCode As Long, lpbKeyState As Byte, lpwTransKey As Integer, ByVal fuState As Long) Declare Function ToAsciiEx& Lib "user32" (ByVal uVirtKey As Long, ByVal uScanCode As Long, lpKeyState As Byte, lpwTransKey As Integer, ByVal fuState As Long, ByVal dwhkl As Long)
说明
根据当前的扫描码和键盘信息，将一个虚拟键转换成ASCII字符
返回值
Long，负值表明按键是“死”的——不能自己将自己转换成一个字符（重音键[accent keys]就是一个例子）。在给定当前键盘状态的前提下，如按键不能被转换（翻译），则返回0。如单个字符已载入lpwTransKey，则返回1。如lpwTransKey里已载入了两个字符（需要把它分隔到两个字节里），那么返回值是2。在当前字符集里，倘若单独一个字符不能表达键盘支持的死键或重音按键组合，就可能得到2的返回值
参数表
参数 | 类型及说明
uVirtKey | Long，欲转换的虚拟键
uScanCode | Long，键的扫描码。如键处于抬起状态，会设置高位（设为1）；如按下，则清除高位（设为0）
lpbKeyState | Byte，描述了键盘状态的一个256字符数组的第一个条目。参考GetKeyboardState函数，了解关于这个数组更多的情况
lpwTransKey | Integer，用于装载转换过后的字符的一个整数变量。可用 chr()函数将这个值转换成一个字串
fuState | Long，如一个菜单处于活动状态，则设为1
dwhkl | Long，欲用于转换的一个键盘布局的句柄
注解
NumLock键的状态会被忽略，因为虚拟键码包括了哪个信息 在微软的win32手册里，对ToAsciiEx函数的建议是将它的lpwTransKey参数设为Long，而不要设为Integer。这里的函数声明根据实际的C语言头，它将参数定义成一个16位的字（既vb的整数）

Top