Главная страница
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.051 c
14-1127746766
Igorek
2005-09-26 18:59
2005.10.16
Какие ваши точные координаты?


14-1127245744
palva
2005-09-20 23:49
2005.10.16
А теперь зацените мои фотки


14-1127480934
ПЛОВ
2005-09-23 17:08
2005.10.16
посоветуйте


1-1127658051
bravo_elf
2005-09-25 18:20
2005.10.16
Нужна помощь с Delphi Architect 2005


2-1126952706
Ivan78
2005-09-17 14:25
2005.10.16
Запрос по полю TimeStamp