使用GetKeyNameText 可以把虚拟键码或者扫描码转成文字,例如 Ctrl键 可以被转换为“Ctrl",但是我现在需要把他从"Ctrl"重新转回虚拟键码,或者扫描码。
本来想使用VkKeyScan来实现的,但是发现它的输入参数是Byte型的,也就是说数字键和字母都没问题,但是遇到了Ctrl之类的键的话,输入必须为string型,或者Char[],才能满足,所以VkKeyScan,不可行。
那么我应该使用哪个API呢?
本来想使用VkKeyScan来实现的,但是发现它的输入参数是Byte型的,也就是说数字键和字母都没问题,但是遇到了Ctrl之类的键的话,输入必须为string型,或者Char[],才能满足,所以VkKeyScan,不可行。
那么我应该使用哪个API呢?
函数功能:该函数将一个字符翻译成相应的虚拟键码和对于当前键盘的转换状态。该函数己被VkKeyScanEx函数所替代。仍然可以使用VkKeyscan函数,但是不必再定义键盘布局。 函数原型:SHORT VkKeyScan(TCHARch); 参数: ch:定义被翻译成虚拟键码的字符。 返回值:若函数调用成功,则返回值的低位字节中包含了虚拟键码,高位字节中包含了上挡状态。
VkKeyScanEx功能差不多,就是多个参数。 问题在于Ctrl键,Alt键,BackSpace键之类的虚拟键码如何计算?
使用一个xml文档来记录键名和虚拟键码之间的关系,然后在使用的时候,用这个xml来填充一个sortedlist(或者map)然后再从这个map中取得虚拟键码。