Главная страница
    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.054 c
4-1124203096
SpyBoy
2005-08-16 18:38
2005.10.16
размер скачиваемого файла


8-1116960003
Eraser
2005-05-24 22:40
2005.10.16
Формирование wav файла из данных в фотмате PCM


14-1124309675
Пантелеев Иван
2005-08-18 00:14
2005.10.16
Зашифрофка программы


1-1127486011
злобная танька
2005-09-23 18:33
2005.10.16
Локальные типизированные константы


1-1127600969
Леха
2005-09-25 02:29
2005.10.16
Таблица StringGrid





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский