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

Тема в разделе "MS Visual C++", создана пользователем flamey, 2 янв 2008.

  1. flamey

    flamey Гость

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Из MSDN:
    В системе локаль меняется, а не у отдельного процесса.
     
  3. flamey

    flamey Гость

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

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Для: flamey
    Да, недочитал.
     
  5. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Для: flamey
    Отправку WM_INPUTLANGCHANGEREQUEST пробовал?
     
  6. gamecreator

    gamecreator Гость

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

    flamey Гость

    спасибо за ответы. буду пробовать 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 , из которого вроде как следует что в большинстве случаев работать должно... или я что-то не так понял :) по любому спасибо, буду дерзать
     
  8. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--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? Молодец, красиво примазался!
     
  9. flamey

    flamey Гость

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

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

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

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

    gamecreator Гость

    знаешь, я не вчитывался. и вообще, я имел ввиду нажатие клавиш Ctrl+Shift и т.п.
     
  11. flamey

    flamey Гость

    а, это типа сарказм... только дошло ;) B)
     
Загрузка...

Поделиться этой страницей