Текущий архив: 2011.06.26;
Скачать: CL | DM;
Вниз
Переключение раскладки клавиатуры в консоли Найти похожие ветки
← →
ganj (2008-08-19 18:44) [0]Как переключить раскладку в консоли? И узнать текущую?
Следующий код не работает (на С++):
LoadKeyboardLayout( StrCopy(Layout,"00000419"),KLF_ACTIVATE);
и
int i= (int)GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(),NULL));
← →
Leonid Troyanovsky © (2008-08-20 14:05) [1]
> ganj (19.08.08 18:44)
> Как переключить раскладку в консоли? И узнать текущую?
Узнать это:
hkl := GetKeyboardLayout(0);
А установить (если окно консоли активно):
ActivateKeyboardLayout(hkl, 0);
PostMessage(GetForegroundWindow, WM_INPUTLANGCHANGEREQUEST, 1, hkl);
--
Regards, LVT.
← →
ganj (2008-08-20 16:09) [2]
> Узнать это:
> hkl := GetKeyboardLayout(0);
>
Это не для активного окна. А как для активного окна.GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(),NULL));
не помогает
← →
clickmaker © (2008-08-20 16:24) [3]AttachThreadInput
GetKeyboardLayout?
← →
Leonid Troyanovsky © (2008-08-20 16:42) [4]
> ganj (20.08.08 16:09) [2]
> > hkl := GetKeyboardLayout(0);
> Это не для активного окна. А как для активного окна.
Это, понятно, для текущего потока.
А чего, тебя интересуют чужие консоли?
Ставь системный WH_SHELL, там есть и про раскладку.
--
Regards, LVT.
← →
ganj (2008-08-20 16:44) [5]
> AttachThreadInput
Можете написать, как это должно быть? Не понимаю просто.AttachThreadInput(
GetWindowThreadProcessId(GetForegroundWindow(),NULL),
GetWindowThreadProcessId(this->Handle,NULL),
true
);
GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(),NULL));
Так не получается
← →
ganj (2008-08-20 16:44) [6]
> AttachThreadInput
Можете написать, как это должно быть? Не понимаю просто.AttachThreadInput(
GetWindowThreadProcessId(GetForegroundWindow(),NULL),
GetWindowThreadProcessId(this->Handle,NULL),
true
);
GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(),NULL));
Так не получается
← →
ganj (2008-08-20 16:45) [7]
> AttachThreadInput
Можете написать, как это должно быть? Не понимаю просто.AttachThreadInput(
GetWindowThreadProcessId(GetForegroundWindow(),NULL),
GetWindowThreadProcessId(this->Handle,NULL),
true
);
GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(),NULL));
Так не получается
← →
ganj (2008-08-20 16:45) [8]
> AttachThreadInput
Можете написать, как это должно быть? Не понимаю просто.AttachThreadInput(
GetWindowThreadProcessId(GetForegroundWindow(),NULL),
GetWindowThreadProcessId(this->Handle,NULL),
true
);
GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(),NULL));
Так не получается
← →
clickmaker © (2008-08-20 16:56) [9]а так?
MyThreadId := GetWindowThreadProcessId(this->Handle,NULL);
AlienThreadId := GetWindowThreadProcessId(GetForegroundWindow(),NULL);
AttachThreadInput(MyThreadId, AlienThreadId, true);
kl := GetKeyboardLayout(AlienThreadId);
AttachThreadInput(MyThreadId, AlienThreadId, false);
← →
Leonid Troyanovsky © (2008-08-20 17:57) [10]
> clickmaker © (20.08.08 16:56) [9]
> AlienThreadId := GetWindowThreadProcessId(GetForegroundWindow(),
> NULL);
Окно консоли создается другим процессом, AFAIK, csrss.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2008-08-20 17:59) [11]
> ganj (20.08.08 16:45) [7]
> Можете написать, как это должно быть?
Чего тебе надобно, старче?
--
Regards, LVT.
← →
ganj (2008-08-22 10:45) [12]
> > ganj (20.08.08 16:45) [7]
>
> > Можете написать, как это должно быть?
>
> Чего тебе надобно, старче?
Я же написал на примере код, он не работает.
> Окно консоли создается другим процессом, AFAIK, csrss.
>
Я смотрел. csrss-10 потоков, открываю несколько консолей - 11 потоков. И непонятно что делать дальше. Так вопрос не решил пока. Как узнать текущую раскладку в окне консоли?
← →
Leonid Troyanovsky © (2008-08-22 13:37) [13]
> ganj (22.08.08 10:45) [12]
> Я же написал на примере код, он не работает.
А ты не объяснил, где работает оный код.
Я ж привел рабочий код для собс-ного консольного приложения.
Если ты хочешь следить за чужими консолями, то и про это
был разговор - ставь хук WH_SHELL.
> к узнать текущую раскладку в окне консоли?
WH_SHELL, он, кстати, следит и за активацией окон.
Если же ты хочешь поменять активной консоли раскладку,
то шли ей SendInput той комбинации, что переключает оную.
--
Regards, LVT.
← →
white_hat (2009-07-27 11:24) [14]Удалено модератором
Страницы: 1 вся ветка
Текущий архив: 2011.06.26;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.009 c