|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.07.2011, 22:06 | #1 |
Пользователь
Регистрация: 20.06.2011
Сообщений: 31
|
Определение раскладки клавиатуры если программа не в фокусе
Код:
Приведенная выше программа выдает состояние раскладки клавиатуры. Но если программа не в фокусе а допустим запустил блокнот то программа неправильно определяет какая сейчас раскладка клавиатуры. Как бы правильно определить раскладку клавиатуры если программа не в фокусе? |
31.07.2011, 23:02 | #2 | |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
Цитата:
Окно - объект ОС, создаваемый конкретным объектом - кодовым потоком. Раскладка клавы - это индивидуальный элемент контекста каждого отдельно рассматриваемого существующего кодового потока. В WinAPI есть ф-ция, позволяющая одному кодовому потоку "подключиться" к контексту ввода-вывода другого кодового потока - AttachThreadInput(). Эту ф-цию и следует курить для решения "задачи о раскладке". |
|
01.08.2011, 07:45 | #3 |
Пользователь
Регистрация: 20.06.2011
Сообщений: 31
|
Спасибо конечно только я ничего не понял. Может быть маленький примерчик можно?
|
01.08.2011, 08:30 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Предположительно так: Выясняем какое окно в фокусе (GetFocus или я лично предпочитаю GetForegroundWindow), далее выясняем его главный поток (GetWindowThreadProcessId, или лучше будет использовать EnumThreadWindows), а уже потом можно тот ThreadId передавая в GetKeyboardLayout получить раскладку.
Это ИМХО, сам я не пробовал такое сочетание функций
I'm learning to live...
|
01.08.2011, 09:04 | #5 |
Пользователь
Регистрация: 20.06.2011
Сообщений: 31
|
Код:
Нашел вот такую функцию. Но она возвращает одно и тоже значение 0. В чем причина может быть? |
01.08.2011, 10:59 | #6 |
Software Developer
Старожил
Регистрация: 19.12.2008
Сообщений: 2,070
|
Та не, функция рабочая...
Вот например по таймеру все работает: Код:
Будь проще и люди к тебе потянутся
|
01.08.2011, 16:39 | #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 |