ActivateKeyboardLayout не работает
и есть самописная прога, которая глобально отслеживает нажатия клавиш.
Эмуляция вращения колеса мыши работает без проблем,
но вот раскладка по нажатию на колесо переключаться не хочет.
Пробовал ворианты ActivateKeyboardLayout((HKL)HKL_NEXT, 0); и
ActivateKeyboardLayout((HKL)HKL_NEXT, KLF_SETFORPROCESS);. Не помогло.
[QUOTE=MSDN]The input locale identifier must have been loaded by a previous call to the LoadKeyboardLayout function[/QUOTE]
Необязательно. Это если нужно дополнительные раскладки подгрузить.
А мне то нужны стандартные (рус/англ), которые уже настроенны в системе.
Возвращает то, что и должен возвращать -- циклически два значения (хэндлы раскладок) по очереди, при каждом вызове.
Тут ещё выяснилось, что оно даже переключает раскладки.
Но вот переключает оно для себя. А мне надо для всех (или для приложения активного окна). Тоесть, мне нужен аналог нажатия правых CTRL+SHIFT (или левых ALT+SHIFT, смотря у кого как настроено).
При этом указание во втором параметре 0, либо KLF_SETFORPROCESS(0x00000100) ничего не меняет.
Хотя, я сразу не заметил, но в MSDN сказано:
В таком случае как переключить раскладку глобально?
Как вариант остаётся только непосредственно эмулировать нажатия правых CTRL+SHIFT. Но это уже самый последний вариант, ибо изврат.
И чем тогда этот способ лучше глобальной отправки нажатий (через keybd_event, или SendInput)?
Тем более, не факт, что нажатие комбинаций клавиш, переключающих раскладку,
обрабатывается именно приложением, а не ОС.
Тем более, не факт, что нажатие комбинаций клавиш, переключающих раскладку,
обрабатывается именно приложением, а не ОС.
Ага, чёт я пургу сморозил, сорь)
И никаких ActivateKeyboardLayout не надо.
Судя по всему, GetForegroundWindow возвращает окно нашей программы, а не то окно, для которого мы хотим переключить раскладку.
Опять получается, что программа переключает раскладку для самой себя.
А если программа переключает раскладку для самой себя - значит просто её окно в фокусе.
Это точно работает! Программа, использующая этот способ, в настоящий момент загружена и активно используется (у меня).