Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: 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 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.035 c
14-1127426503
vimst
2005-09-23 02:01
2005.10.16
вопрос об процессе в виндах


3-1125477648
Max Zyuzin
2005-08-31 12:40
2005.10.16
Помогите составить SQL запрос


3-1125819377
Hata
2005-09-04 11:36
2005.10.16
Как программно очистить всю таблицу от записей?


14-1127583183
lookin
2005-09-24 21:33
2005.10.16
3D-графики с возможностью сохранения в pdf


1-1127388681
grizzli
2005-09-22 15:31
2005.10.16
Админ delphi