![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Очистка буфера клавиатуры [D6, D7, Win2k, WinXP]
SMT © (2004-05-21 10:03:00)Уважаемые господа,
Как средствами Windows API правильно очищать буфер клавиатуры?
Игорь Степанов
LMD (2004-05-22 15:12:00) [1]
> там еще могут быть TSR программы (резиденты) которые работают
> с буфером. keyrus к примеру.
Эти резиденты перехватывают прерывание клавиатуры (keyrus, к примеру), поэтому в тот буфер, который "функция 0C H прерывания DOS 21 H." данные попадают уже после них.
sniknik (2004-05-22 10:37:00) [2]> А в DOS'е вообще только одно приложение, о чем тут говорить ?
там еще могут быть TSR программы (резиденты) которые работают с буфером. keyrus к примеру.
LMD (2004-05-22 01:42:00) [3]Cobalt © (22.05.04 01:16)
> А в ДОСе буфер один на всех, так что для всех не сделаешь
А в DOS'е вообще только одно приложение, о чем тут говорить ?
> Тем более, насколько я понимаю - там нет такого буфера -
> события сразу же передаётся менеджеру окон, а оно посылает
> в очередь сообщений (а не буфер клавиатуры)
Есть. Буфер находится в потоке "сырого" ввода (RIT - Raw Input Thread), куда складывает символы драйвер клавиатуры. Называется этот буфер System Hardware Input Queue. Затем эти символы в виде сообщений направляются в виртуализированную очередь ввода потока (ту самую, с которой работает функция GetKeyState), причем того потока, который в настоящий момент подсоединен к RIT.
Cobalt (2004-05-22 01:16:00) [4]>LMD © (21.05.04 21:35) [4]
Только для одного приложения. А в ДОСе буфер один на всех, так что для всех не сделаешь.
Тем более, насколько я понимаю - там нет такого буфера - события сразу же передаётся менеджеру окон, а оно посылает в очередь сообщений (а не буфер клавиатуры)
LMD (2004-05-21 21:35:00) [5]PeekMessage (hWnd, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE) может сыграть роль "очистителя буфера клавиатуры"
Cobalt (2004-05-21 18:42:00) [6]С лёгким сердцем говорю - нет такого (слава богу!)
SMT (2004-05-21 18:23:00) [7]Уважаемые господа,
Под понятием очистки буфера клавиатуры я понимаю функцию 0C H прерывания DOS 21 H. Есть ли аналог этой функции среди функций Windows API?
Заранее благодарю, Игорь Степанов
Cobalt (2004-05-21 10:25:00) [8]Боюсь, что в Виндах нет такого прикладного понятия как "буфер клавиатуры".
Или вы имеете в виду что-то иное? Что именно?
Чётче выражайте свои мысли.