[DllImport("user32.dll")]
private static extern short VkKeyScan(char ch);
set = set + "\r\n";
int txL = set.Length;
for (int o = 1; o < (txL); o++)
{
short vkey = VkKeyScan(set[o]); //MessageBox.Show(vkey.ToString());
Keys retval = (Keys)(vkey & 0xff);
int modifiers = vkey >> 8;
if ((modifiers & 1) != 0) retval |= Keys.Shift;
if ((modifiers & 2) != 0) retval |= Keys.Control;
if ((modifiers & 4) != 0) retval |= Keys.Alt;
}
Эти функции преобразуют стандартный алфавит и раскладку клавиатуры в KeyCode, как я могу преобразовать все другие Юникоды, как китайцы, а также символы в ASCII? он также не работает для клавиш переключения: "!, @, #, $..." Итак, как можно комбинировать ALT и другой ключ, а затем преобразовать в KeyCode? например, ALT+33 = "!" and KeyCode = 0xF0
ALT+33 = "!" and KeyCode = 0xF0
ALT-код - это просто десятичное представление шестнадцатеричного значения символа Unicode. Например, если вы проверите официальный график, вы увидите, что значение для !
это 0021
если вы преобразуете это значение из шестнадцатеричного числа в десятичное, вы получите 33
и именно там появляется alt + numPad-3 + numPad-3.
Вы можете получить все возможные значения кода Unicode, просмотрев соответствующий PDF файл с http://www.unicode.org/charts
Существует много символов Unicode, которые не имеют соответствующих ключей. Например, у меня есть клавиатура с 105 клавишами, в то время как около миллиона символов Unicode. Также отображение символа на клавиатуре зависит от раскладки клавиатуры. Поэтому нет общего ответа на вашу проблему.
Encoding.Unicode.GetString(byte[])
чтобы преобразовать ваш байтовый массив в значение Unicode.