Страница: 1 |
Вопрос: Раскладка клавиатуры | Добавлено: 27.02.04 15:14 |
Автор вопроса: ![]() |
Как узнать раскладку клавиатуры для активного окна? Т.е. мне надо, чтобы моя программа умела определять какая раскладка у окна стороннего приложения... Смотрел пример в библиотеке кодов, но он работает только для текущего приложения... |
Ответы | Всего ответов: 3 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: 554200 Вопросов: 101 Ответов: 343 |
Профиль | Цитата | #1 | Добавлено: 28.02.04 11:40 |
Это почему на такой вопрос никто так и не смог ответить? Вот написал функцию на си++... //========================================== HKL GetKbdLayout() { //УЗНАЕМ РАСКЛАДКУ КЛАВИАТУРЫ //GetKeyboardLayout - Возвращаемые значения //Величина возвращаемого значения - дескриптор раскладки символов на клавиатуре //для потока. Младшее слово содержит идентификатор региона, идентифицирующий //язык ввода, а старшее слово содержит дескриптор устройства, идентифицирующий //физическую раскладку клавиатуры. //1. узнаем hwnd активного окна HWND hwndActive = GetForegroundWindow(); if(!hwndActive) {return 0;} //2. узнаем поток текущего окна DWORD threadId = GetWindowThreadProcessId(hwndActive,NULL); if(!threadId) {return 0;} //3. получаем активную раскладку клавиатуры для заданного потока HKL kbdLayout = GetKeyboardLayout(threadId); if(!kbdLayout) {return 0;} return kbdLayout; } //============================================ и еще, для определения раскладки надо сделать так PRIMARYLANGID(HKL); //вот так этот макрос определен в winnt.h //#define PRIMARYLANGID(lgid) ((WORD )(lgid) & 0x3ff) //макрос PRIMARYLANGID(HKL) возвращает language identifier //например LANG_ENGLISH = 0х9, LANG_RUSSIAN = = 0х19 Думаю перевод данного кода на vb не вызовет затруднений... Может напишу и вышлю в примеры, если это кому-то вообще нужно |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 28.02.04 12:03 |
Напиши, лишним не будет. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 247906854 Вопросов: 133 Ответов: 882 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 29.02.04 02:00 |
Я пользуюсь одной строкой: Rez = GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, 0)) |
Страница: 1 |
|