Использую вот эти функции: HWND hFocus = GetForegroundWindow(); HKL hklLayout = GetKeyboardLayout(GetWindowThreadProcessId(hFocus, 0)); Дело в том, что раскладку клавиатуры GUI окон определяет нормально, а вот КОНСОЛЬНЫЕ не берет. Есть возможность поставить глобальный хук, но этот вариант не подходит. Есть ли решение, что бы и определить нормально и длл не использовать? Что-то я нашел на: http://www.wasm.ru/forum/viewtopic.php?pid=275151, но для меня там слишком сложно написанно, если кто сможет кусок исходника смастерить или объяснить?
nkode AttachConsole()/GetThreadLocale(). Есчо может подойти GetConsoleKeyboardLayoutName(): Код (Text): BOOL GetConsoleKeyboardLayoutName(OUT LPSTR pszLayout)] Хотя не подойдёт, наверно она для текущей консоли, мб в мессаге можно указать целевую. - С запросом к серверу идея хорошая была.
Пробовал делать это следующим образом: Код (Text): GetWindowThreadProcessId(hFocus,dwProcessID); AttachConsole(dwProcessID); lcid=GetThreadLocale(); Дело в том что он возвращает LCID русской локали, хотя пишет латиницей. Т.е. этим вариантом я незнаю как определить текущую расскладку в консоли. Есть еще предложения?
http://msdn.microsoft.com/en-us/library/dd319088%28VS.85%29.aspx It uses GetACP or GetOEMCP to retrieve the value
2 IceCrashLdr Использовал GetACP и GetOEMCP, переключаю раскладку они возвращают одинаковые значения. Код (Text): GetWindowThreadProcessId(hFocus,dwProcessID); AttachConsole(dwProcessID); codepage=GetACP();
nkode Виньапи ограничены слишком. Пишите дров и получайте что угодно. Эта задача вероятно не имеет решения в U-mode.