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的整数) |