Здравствуйте, моя проблема заключается в следующем: По описанию ф-ция ToAsciiEx должна возвращать Ascii-код виртуальной клавиши в зависимости от различных факторов, в том числе и языковой раскладки клавиатуры. Но ниже представленный код возвращает верный код только при английской раскладке, а допустим при русской выдает тот же код, что и при английской. Код (Text): .386 .model flat, stdcall include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib .data? buf db 256 dup (?) symb db ? .code start: invoke OemKeyScan, 41h push eax invoke GetKeyboardState, offset buf invoke GetKeyboardLayout, 0 pop ebx invoke ToAsciiEx, 41h, ebx, offset buf, offset symb, 0, eax invoke MessageBoxA, 0, offset symb, offset symb, 0 invoke ExitProcess, 0 end start В чем/где ошибка? Спасибо за внимание.
churik > при русской выдает тот же код Быть того не может. Если установить язык ввода по умолчанию Русский, то OemKeyScan вернет -1, далее по цепочке ToAsciiEx вернет ноль, а не как не "тот же код". Расшифровку возвращаемых значений читай в документации.