Как поменять расскладку клавиатуры для чужого процесса?

  • Автор темы flamey
  • Дата начала
F

flamey

LoadKeyboardLayout / ActivateKeyboardLayout меняют расскладку только для своего приложеня, как поменять для чужого?
 
F

flamey

насколько я понимаю "loads" это не значит что она меняется. LoadKeyboardLayout с флагом KLF_ACTIVATE загружает раскладку и активирует её для текущего потока - это из той же статьи msdn. я не вижу там ничего что бы заставляло менять локаль для всей системы.

вобщем мне надо это сделать для одного, чужого процесса (для которого у меня будет HWND, если это поможет). но не для всей системы.
 
E

European

Для: flamey
Отправку WM_INPUTLANGCHANGEREQUEST пробовал?
 
G

gamecreator

может отправить в тот процесс сообщение нажатия клавиш смены языка?
 
F

flamey

спасибо за ответы. буду пробовать WM_INPUTLANGCHANGEREQUEST. пока искал решение, натолкнулся на , где написанно что WM_INPUTLANGCHANGEREQUEST вроде как больше не работает и надо использовать dll injection (а как это делать я не знаю :)). но потом там же обнаружился , из которого вроде как следует что в большинстве случаев работать должно... или я что-то не так понял :) по любому спасибо, буду дерзать
 
E

European

<!--QuoteBegin-gamecreator+3:01:2008, 18:41 -->
<span class="vbquote">(gamecreator @ 3:01:2008, 18:41 )</span><!--QuoteEBegin-->может отправить в тот процесс сообщение нажатия клавиш смены языка?
[snapback]92162" rel="nofollow" target="_blank[/snapback]​
[/quote]
Интересно, а что за сообщение WM_INPUTLANGCHANGEREQUEST? Молодец, красиво примазался!
 
F

flamey

Интересно, а что за сообщение WM_INPUTLANGCHANGEREQUEST?
я не знаю как ответить на этот вопрос - я недопрограммист-самоучка ;) но WM_INPUTLANGCHANGEREQUEST работает! правда судя по ссылкам которые я кинул выше возможно не везде будет работать, но пока меня устраивает - я пишу что-то для облегчение жизни впервую очередь себе, а потом посмотрим.

про dll injection вчера почитал, вроде принцип понял, только не знаю на что hook вешать, какие сообщения ловить и что потом делать для раскладки.

может отправить в тот процесс сообщение нажатия клавиш смены языка?
спасибо, тоже возможно вариант. но где-то в msdn прочитал, что при нажатии этой комбинации клавиш или выбора языка в панели, в поток отправляется WM_INPUTLANGCHANGEREQUEST. так проще самому это сделать - одна строка кода.. поэтому я и не понял обсуждение темы в том msdn-блоге. но я пока весь раздел о языках не прочитал, только отрывки.Для:

European, спасибо за совет!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!