Важная информация
Показано с 1 по 8 из 8

Тема: Консоль и клавиатурные раскладки

  1. #1 Консоль и клавиатурные раскладки 
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,819
    Сказал(а) спасибо
    1,806
    Поблагодарили 932 раз(а) в 794 сообщениях
    Записей в блоге
    1
    Помню раньше видел на FB как получить хендл консоли и поменять раскладку.
    Проблема в том, что не могу найти этот код, перерыл заново пол гугла и опупел,
    Т.е. нужно поменять заголовок окна консоли, найти HWND окна с данным заголовком и
    поменять раскладку.

    Ещё часть проблемы состоит в том, что на XP у меня вот такой код срабатывает:

    FreeBasic Code:
    1. ActivateKeyboardLayout(HKL_NEXT, KLF_SETFORPROCESS)

    А на семёрке - не пашет. В чём дело понять не удаётся. Т.е. никакой реакции данная
    функция не производит.
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  2. #2  
    Профи Аватар для stabud
    Регистрация
    05.01.2013
    Сообщений
    765
    Сказал(а) спасибо
    318
    Поблагодарили 337 раз(а) в 266 сообщениях
    Записей в блоге
    6
    Заголовок меняется так:

    FreeBasic Code:
    1. SetConsoleTitle("новый заголовок")


    Хендл можно найти с помощью findwindow , типа так:

    FreeBasic Code:
    1. hwnd = FindWindow( "ConsoleWindowClass", "текущий заголовок окна" )


    Или

    FreeBasic Code:
    1. hwnd =GetConsoleWindow


    Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
    А на семёрке - не пашет. В чём дело понять не удаётся. Т.е. никакой реакции данная
    функция не производит.
    У меня работает. Что у тебя возвращает данный код:

    FreeBasic Code:
    1. #Include "windows.bi"
    2. Do
    3. Sleep(100)
    4. ? ActivateKeyboardLayout(HKL_NEXT, KLF_SETFORPROCESS)
    5. Loop Until MultiKey(1)


    если цифры поочередно меняются, значит функция работает.
    Последний раз редактировалось stabud; 26.03.2016 в 09:54.
    Ответить с цитированием  
     

  3. 2 пользователя(ей) сказали cпасибо:

    >Quiet Snow< (26.03.2016), Free Admin (26.03.2016)

  4. #3  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,819
    Сказал(а) спасибо
    1,806
    Поблагодарили 932 раз(а) в 794 сообщениях
    Записей в блоге
    1
    У меня работает. Что у тебя возвращает данный код
    Блин, уехал на выходные из города, завтра отпишусь. Комп тут есть но надо на моём тестировать, т.к. тут XP.

    Цитата Сообщение от stabud Посмотреть сообщение
    Заголовок меняется так: FreeBasic Code:SetConsoleTitle("новый заголовок")
    Хендл можно найти с помощью findwindow , типа так: FreeBasic Code:hwnd = FindWindow( "ConsoleWindowClass", "текущий заголовок окна" )
    Или FreeBasic Code:hwnd =GetConsoleWindow
    Во спасибо! Это и искал.
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  5. #4  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,819
    Сказал(а) спасибо
    1,806
    Поблагодарили 932 раз(а) в 794 сообщениях
    Записей в блоге
    1
    Добрался до компа.
    Цитата Сообщение от stabud Посмотреть сообщение
    #Include "windows.bi"
    Do
    Sleep(100)
    ? ActivateKeyboardLayout(HKL_NEXT, KLF_SETFORPROCESS)
    Loop Until MultiKey(1)

    если цифры поочередно меняются, значит функция работает.
    Цифры меняются, но в чём причина, что не меняется ввод через INPUT ?

    Раскл.PNG
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  6. #5  
    Профи Аватар для stabud
    Регистрация
    05.01.2013
    Сообщений
    765
    Сказал(а) спасибо
    318
    Поблагодарили 337 раз(а) в 266 сообщениях
    Записей в блоге
    6
    Честно не знаю, это вопрос скорее к разрабам мелкософта, поскольку данная проблема не зависит от ЯП. Есть более простой и работающий метод переключения:

    FreeBasic Code:
    1. #Include "windows.bi"
    2. Do
    3. Var s = GetKey
    4.  
    5. If s = 49 Then ' цифра 1
    6. PostMessage(GetConsoleWindow(), WM_INPUTLANGCHANGEREQUEST, 1, 68748313)
    7. ? "RU"
    8. ElseIf s = 50 Then ' цифра 2
    9. ? "EN"
    10. PostMessage(GetConsoleWindow(), WM_INPUTLANGCHANGEREQUEST, 1, 67699721)
    11. EndIf
    12. If s <> 49 AndAlso s <> 50 Then
    13. ? Chr(s)
    14. EndIf
    15. Loop Until MultiKey(1)
    Последний раз редактировалось stabud; 27.03.2016 в 17:01.
    Ответить с цитированием  
     

  7. Пользователь сказал cпасибо:

    >Quiet Snow< (27.03.2016)

  8. #6  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,819
    Сказал(а) спасибо
    1,806
    Поблагодарили 932 раз(а) в 794 сообщениях
    Записей в блоге
    1
    Стас спасибо, этот метод работает! Ё маё, мелкомягкие, за что ж они так с людьми?)))

    Вот серьёзно никогда бы не допёр, что можно так переключить.
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  9. #7  
    Разбирающийся
    Регистрация
    01.04.2015
    Сообщений
    59
    Сказал(а) спасибо
    3
    Поблагодарили 35 раз(а) в 27 сообщениях
    данная проблема не зависит от ЯП
    Подтверждаю. Написал подобное на PB. Раскладка меняется, а язык в ввода остается прежним.
    Ответить с цитированием  
     

  10. Пользователь сказал cпасибо:

    >Quiet Snow< (29.03.2016)

  11. #8  
    Профи Аватар для Сионист
    Регистрация
    21.01.2016
    Адрес
    Галактика Млечный Путь
    Сообщений
    509
    Сказал(а) спасибо
    11
    Поблагодарили 21 раз(а) в 20 сообщениях
    Ну у мелкомягких разные чудеса бывают. Вроде того, что раскладка на кириллицу переключается, а язык остаётся английский, или переключаешь язык, а раскладка остаётся американская.
    Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на си.
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 1
    Последнее сообщение: 01.03.2014, 05:22
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •