Страница: 1 |
Как узнать раскладку клавиатуры для активного окна? Т.е. мне надо, чтобы моя программа умела определять какая раскладка у окна стороннего приложения... Смотрел пример в библиотеке кодов, но он работает только для текущего приложения...
Это почему на такой вопрос никто так и не смог ответить? Вот написал функцию на си++... //========================================== 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 не вызовет затруднений... Может напишу и вышлю в примеры, если это кому-то вообще нужно Напиши, лишним не будет. Я пользуюсь одной строкой: Rez = GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow, 0)) Страница: 1 |
Вопрос: Раскладка клавиатуры
Добавлено: 27.02.04 15:14
Автор вопроса: Chill | ICQ: 554200
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
Chill
ICQ: 554200
Вопросов: 101
Ответов: 343
Профиль | | #1
Добавлено: 28.02.04 11:40
Номер ответа: 2
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 28.02.04 12:03
Номер ответа: 3
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #3
Добавлено: 29.02.04 02:00