Вниз
Скачать: CL | DM;

Консольное приложение   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.027 c
6-1119435580
Drema
2005-06-22 14:19
2005.10.16
Indy - idHTTP - прокси


3-1125497727
Dmitrich
2005-08-31 18:15
2005.10.16
Почему БД (interBase 6.0) не работает с диска?


1-1127647085
вопрос
2005-09-25 15:18
2005.10.16
максимально допустимая величина массива


14-1127685955
Германн
2005-09-26 02:05
2005.10.16
Анимация окна


1-1127809485
BaxTMaH
2005-09-27 12:24
2005.10.16
Как в Edit вводить только цифры?




   Наверх