Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.099 c
14-1127409500
Мексиканец
2005-09-22 21:18
2005.10.16
Кино Митрофанова


6-1119417372
Progh
2005-06-22 09:16
2005.10.16
Как получить список всех IP адресов локальной сети


14-1127737510
Layner
2005-09-26 16:25
2005.10.16
У берегов США пропали дельфины, обученные нападать на людей


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


14-1124987974
TG
2005-08-25 20:39
2005.10.16
АНИМАЦИЯ





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский