Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Клава


Автор: Леха 5.4.2004, 21:04
Как можно перехватывать любые нажатия клавишь?

Автор: DonPager 5.4.2004, 21:11
в самом верху есть окошко "поиск" - там спроси тебе ответят

Автор: Леха 5.4.2004, 22:41
К сожалению я ничего не нашел в поиске...
Мне нужно чтобы моя прога вылавливала все нажатия на клавиши, даже если окно программы не активно.

Автор: Mal Hack 5.4.2004, 22:48
В объявление
Код
procedure IdleProc(Sender: TObject; var Done : boolean);

В TForm1.FormCreate
Код
Application.OnIdle := IdleProc;

Сама процедура:
Код
procedure TForm1.IdleProc(Sender: TObject; var Done : boolean);
begin
if GetKeyState(VK_NumLock) = 1 then
 StatusBar1.Panels[3].Text := 'NUM'
else
 StatusBar1.Panels[3].Text := '';
end;

Смысл GetKeyState определяет в каком состоянии находится клавиша (код передается в качестве параметра), и потом в зависимости от возвращенного результата изменяется текст на панели состояния...
В качестве параметров можно передавать, например: VK_F3, VK_W, VK_Space, т.е. имя вида: VK_xxx.

Автор: dm9 5.4.2004, 23:40
Даём ссылку 163-й раз smile.gif

Хуки, хуки, хуки, хуки, хуки, хуки, хуки, хуки, хуки!!!

Здесь ответ на вопрос:
http://forum.vingrad.ru/index.php?showtopic=18800&hl=%D5%F3%EA

Только тип хука - WH_KEYBOARD, сообщение ловим WM_KEYDOWN (может, ещё WM_KEYUP).
По ссылочке сходишь - там про справку написано. Это неспроста :-) Вызываешь её и читаешь про это событие, про SetWindewsHookEx, но прежде всего - читаем статью (там же ссылка).

Всё, больше тут ничего пока не добавить. Что непонятно - спрашивай.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)