Текущая раскладка клавиатуры
От: Gurza Россия  
Дата: 13.02.05 13:04
Оценка:
MFC VS 8.0
Поставил глобальный хук на клаву.
Символы пишу в файл.

HKL hklLayout = GetKeyboardLayout(0); возвращает всегда ту раскладку что установлена по умолчанию вне зависимости от того какой раскладкой я работаю в каком небудь редакторе на текущий момент.
В результате сохраняются либо постоянно английские символы либо постоянно русские.

HWND hWnd = ::GetForegroundWindow();
DWORD IdThread = 0;
GetWindowThreadProcessId(hWnd, &IdThread); 
HKL hklLayout =GetKeyboardLayout(IdThread);

в этом случае hklLayout == 0


как тему решить?
Re: Текущая раскладка клавиатуры
От: ansi  
Дата: 13.02.05 13:27
Оценка:
G>как тему решить?
IdThread = GetWindowThreadProcessId(hWnd, NULL);
Внимательнее читай МСДН — функция GetKeyboardLayout просит не ид процесса, а ид потока.
Re[2]: Текущая раскладка клавиатуры
От: ansi  
Дата: 13.02.05 13:32
Оценка:
И вообще, для этого есть функции ToAscii, ToUnicode, MapVirtualKey, ... Попробуй.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.