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

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

flamey

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

flamey

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

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

gamecreator

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

flamey

#7
спасибо за ответы. буду пробовать WM_INPUTLANGCHANGEREQUEST. пока искал решение, натолкнулся на http://blogs.msdn.com/michkap/archive/2006/05/16/598980.aspx , где написанно что WM_INPUTLANGCHANGEREQUEST вроде как больше не работает и надо использовать dll injection (а как это делать я не знаю :)). но потом там же обнаружился http://blogs.msdn.com/michkap/archive/2007...11/5397051.aspx , из которого вроде как следует что в большинстве случаев работать должно... или я что-то не так понял :) по любому спасибо, буду дерзать
 
04.09.2006
2 566
3
#8
<!--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

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

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

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

European, спасибо за совет!