![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 20.06.2011
Сообщений: 31
|
![]() Код:
Приведенная выше программа выдает состояние раскладки клавиатуры. Но если программа не в фокусе а допустим запустил блокнот то программа неправильно определяет какая сейчас раскладка клавиатуры. Как бы правильно определить раскладку клавиатуры если программа не в фокусе? |
![]() |
![]() |
![]() |
#2 | |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]() Цитата:
Окно - объект ОС, создаваемый конкретным объектом - кодовым потоком. Раскладка клавы - это индивидуальный элемент контекста каждого отдельно рассматриваемого существующего кодового потока. В WinAPI есть ф-ция, позволяющая одному кодовому потоку "подключиться" к контексту ввода-вывода другого кодового потока - AttachThreadInput(). Эту ф-цию и следует курить для решения "задачи о раскладке". |
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 20.06.2011
Сообщений: 31
|
![]()
Спасибо конечно только я ничего не понял. Может быть маленький примерчик можно?
|
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Предположительно так: Выясняем какое окно в фокусе (GetFocus или я лично предпочитаю GetForegroundWindow), далее выясняем его главный поток (GetWindowThreadProcessId, или лучше будет использовать EnumThreadWindows), а уже потом можно тот ThreadId передавая в GetKeyboardLayout получить раскладку.
Это ИМХО, сам я не пробовал такое сочетание функций
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 20.06.2011
Сообщений: 31
|
![]() Код:
Нашел вот такую функцию. Но она возвращает одно и тоже значение 0. В чем причина может быть? |
![]() |
![]() |
![]() |
#6 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
![]()
Та не, функция рабочая...
Вот например по таймеру все работает: Код:
Будь проще и люди к тебе потянутся
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 20.06.2011
Сообщений: 31
|
![]()
Спс. Получилось
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хук на изменение раскладки клавиатуры | Gerzs | Win Api | 1 | 03.07.2010 22:30 |
смена раскладки клавиатуры | D_E_N | Общие вопросы Delphi | 2 | 17.05.2009 00:26 |
Определение раскладки клавиатуры | micaell | Win Api | 2 | 14.03.2009 23:43 |
Смена раскладки клавиатуры | NoName_emaNoN | Общие вопросы Delphi | 10 | 28.05.2008 08:55 |