Страница 1 из 2

Как зафиксировать нажатие любой кнопки?

Добавлено: 21 окт 2009, 20:24
Dr_Grizzly
Всем привет! Порыл ща на форуме похожие темы, все не то что надо. Нужна функция которая крикнет что по клаве стукнули ) Т.е мне не нужно регистрировать нажатие какой-то клавиши, и не важно какая именно клавиша была нажата, мне нужно зафиксировать факт нажатия любой кнопки на клаве....

GetAsyncKeyState
keybd_event

Эти функции, как я понял, ожидают нажатие заведомо указанной кнопки.... а это не то что мне нужно...

Заранее благодарен ))

Re: Как зафиксировать нажатие любой кнопки?

Добавлено: 21 окт 2009, 22:48
Duncon
onkeydown - событие случается при нажатии кнопки..

Re: Как зафиксировать нажатие любой кнопки?

Добавлено: 22 окт 2009, 05:55
Dr_Grizzly
Duncon писал(а):onkeydown - событие случается при нажатии кнопки..
Это я вкурсе )))) Это событие у какого либо объекта моей программы, а вот в системе как? Т.е прога у меня работает в фоновом режиме...

Re: Как зафиксировать нажатие любой кнопки?

Добавлено: 22 окт 2009, 07:50
atavin-ta
Орлик. Секроеты Delphi.
Прочитай там о ловушках, может быть поможет.

Re: Как зафиксировать нажатие любой кнопки?

Добавлено: 22 окт 2009, 10:05
Duncon
Так бы и написал. Хук в систему вешать нужно..

.

Добавлено: 22 окт 2009, 10:37
BBB
Duncon писал(а):Так бы и написал. Хук в систему вешать нужно..
SetWindowsHookEx

Re: Как зафиксировать нажатие любой кнопки?

Добавлено: 22 окт 2009, 10:50
atavin-ta
То что хук, понятно и без темы. Но я сам не знаю, как его делать, знаю только, где искать инфу о том, как его делать. Вот я и дал тебе такую ссылку. Знал бы сам, отвтил бы конкретнее.

Re: Как зафиксировать нажатие любой кнопки?

Добавлено: 23 окт 2009, 13:07
Dr_Grizzly
Спасибо! Вот только ни разу не пользовался этой функцией - почитал хелп и не до конца соображу какие параметры она просит.

SetWindowsHookEx(WH_KEYBOARD,...,...,...);

Функцию нужно повесит на таймер? И проверять равен ли результат 0?

If SetWindowsHookEx(WH_KEYBOARD,...,...,...)<>0 then
SHowMessage('Клава сработала');

Что-то в этом духе?

Re: Как зафиксировать нажатие любой кнопки?

Добавлено: 23 окт 2009, 13:23
atavin-ta
Таймер здесь вообще не причём. Функцию надо пихнуть в дллку. А подробнее читай у тех, кто знает лучше меня.

Re: Как зафиксировать нажатие любой кнопки?

Добавлено: 23 окт 2009, 15:37
BBB
Dr_Grizzly, если коротко, то при вызове SetWindowsHookEx одним из параметров указывается адрес твоей callback-процедуры. Когда событие слуается, Windows вызывает эту процедуру. Т.е. самому проверять ничего не надо - "за вами придут" :)

Есть тонкость, что, как отметил atavin-ta, эту функцию данном слуае обязательно надо вынести в DLL.