Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как определить момент манипуляции устройством ввода? [D6, WinXP]


Alexei ©   (2009-08-15 01:03:00) 

Как в целом для приложения (а не для конкретной формы) программно определить, что пользователь
1) нажал клавишу (любую) на клавиатуре;
2) сделал манипуляцию мышью (нажал левую / правую кнопку мыши или покрутил колесом)?


TIF   (2009-08-15 02:04:00) [1]

Очень просто :)
Нужно просто ловить сообщения- messages, посылаемые системой

1) Читаем MSDN и собираем нужные нам сообщения:
WM_KEYDOWN:
http://msdn.microsoft.com/en-us/library/ms646280(VS.85).aspx
WM_MOUSEWHEEL:
http://msdn.microsoft.com/en-us/library/ms645617(VS.85).aspx
и так далее

2) Размещаем на форме компонент TApplicationEvents, с помощью которого будем ловить сообщения, посылаемые нашему application
3) В событии OnMessage у него прописываем нужный код, который должен выполняться в каждом конкретном случае, например:
case Msg.message of
    WM_KEYDOWN: ListBox1.Items.Add('Нажата клавиша');
      WM_KEYUP: ListBox1.Items.Add('Отжата клавиша');
 WM_SYSKEYDOWN: ListBox1.Items.Add('Нажата системная клавиша');
   WM_SYSKEYUP: ListBox1.Items.Add('Отжата системная клавиша');
 и так далее :)
end;


PS: полный список сообщений, которые нужны в данном случае
WM_KEYDOWN
WM_KEYUP
WM_SYSKEYDOWN
WM_SYSKEYUP
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_RBUTTONDOWN
WM_RBUTTONUP
WM_MOUSEWHEEL

Подробности - в MSDN (см. пункт 1), хотя и по их названиям можно запросто понять, к каким событиям они привязаны


Наверх

Титульная страница Поиск, карта сайта Написать письмо