Форум: "WinAPI";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
ВнизКонсольное приложение Найти похожие ветки
← →
s999 (2005-07-14 20:42) [0]Может быть кто-нибудь с этим сталкивался. Собственно, проблемы:
Как в консольном приложении узнать текущий Layout(ENG/RUS)?
Можно ли поставить Ноок в консольном приложении? (SetWindowsHookEx ставится, но не работает "нормально" )
И попутно, можно ли "перебрать" (Enum) потоки текущего процесса (приложение консольное, окон нет)?.
← →
имя (2005-07-14 22:18) [1]Удалено модератором
← →
tesseract (2005-07-19 10:27) [2]Мдя - консольное приложение отличается только осутствием графичечкого окна.
SetWindowsHookEx - должен быть во внешней библиотеке.
← →
s999 (2005-08-16 16:19) [3]>SetWindowsHookEx - должен быть во внешней библиотеке.
Вот только под Win95/98/ME ловиться в этот Hook будет все что угодно, но только не относящееся к самой консоли. Все "клавиатурные" функции, типа GetKeyState и т.д., будут откровенно врать. Да, практически, весь API, касающийся ввода-вывода, здесь абсолютно бесполезен.
Решение нашлось только абсолютно кардинальное. "Обволакивание" консольного окна своими новыми окнами, и перенаправление их ввода в WriteConsoleInput.
← →
Leonid Troyanovsky © (2005-08-16 16:33) [4]
> s999 (16.08.05 16:19) [3]
> Решение нашлось только абсолютно кардинальное. "Обволакивание"
> консольного окна своими новыми окнами, и перенаправление
> их ввода в WriteConsoleInput.
Можно и менее кардинально.
Т.е., сделать отдельное оконное (скрытое), приложение
которое установит WH_SHELL хук, и будет отвечать на запросы
(SendMessage) хендла активного окна, текущей раскладки и т.д.
И необязательно exe, можно dll & rundll.
--
Regards, LVT.
← →
s999 (2005-08-16 16:54) [5]
> Можно и менее кардинально.
> Т.е., сделать отдельное оконное (скрытое), приложение
> которое установит WH_SHELL хук,
Пробовал. Все, что касается консольного окна, ни в какие хуки не попадает (в 95/98/me). В nt/2000/xp, конечно, будет работать. Но там просто GetKeyState и GetKeyboardLayout работают нормально.
← →
Leonid Troyanovsky © (2005-08-16 16:59) [6]
> Пробовал. Все, что касается консольного окна, ни в какие
> хуки не попадает (в 95/98/me).
Очень даже попадает. Именно WH_SHELL.
На ем же работает индикатор клавиатуры.
Или ты про полноэкранные?
Ну, эдесь, врать не буду, не пробывал.
--
Regards, LVT.
← →
s999 (2005-08-16 17:18) [7]
> Очень даже попадает. Именно WH_SHELL.
> На ем же работает индикатор клавиатуры.
Дело в том, что в 95/98/me переключение языков в консоли производится Ctrl+Shift-левый/Ctrl+Shift-правый и никак не завязано на индикатор около часиков. Более того, для выполнения консольных приложений существует программа conagent.exe, которая инициализирует некий KEYBOARD.DRV (по-моему 16-ти разрядный), который, насколько я понял, ничего в системную очередь сообщений не кладет. Поэтому хуки и не работают.
← →
Leonid Troyanovsky © (2005-08-16 21:15) [8]
> s999 (16.08.05 17:18) [7]
>
> > Очень даже попадает. Именно WH_SHELL.
Действительно, я погнал.
Sorry.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.054 c