Как зафиксировать нажатие любой кнопки?
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Всем привет! Порыл ща на форуме похожие темы, все не то что надо. Нужна функция которая крикнет что по клаве стукнули ) Т.е мне не нужно регистрировать нажатие какой-то клавиши, и не важно какая именно клавиша была нажата, мне нужно зафиксировать факт нажатия любой кнопки на клаве....
GetAsyncKeyState
keybd_event
Эти функции, как я понял, ожидают нажатие заведомо указанной кнопки.... а это не то что мне нужно...
Заранее благодарен ))
GetAsyncKeyState
keybd_event
Эти функции, как я понял, ожидают нажатие заведомо указанной кнопки.... а это не то что мне нужно...
Заранее благодарен ))
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

onkeydown - событие случается при нажатии кнопки..
[syntax=Delphi] [/syntax]
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Это я вкурсе )))) Это событие у какого либо объекта моей программы, а вот в системе как? Т.е прога у меня работает в фоновом режиме...Duncon писал(а):onkeydown - событие случается при нажатии кнопки..
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

Орлик. Секроеты Delphi.
Прочитай там о ловушках, может быть поможет.
Прочитай там о ловушках, может быть поможет.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Так бы и написал. Хук в систему вешать нужно..
[syntax=Delphi] [/syntax]
SetWindowsHookExDuncon писал(а):Так бы и написал. Хук в систему вешать нужно..
То что хук, понятно и без темы. Но я сам не знаю, как его делать, знаю только, где искать инфу о том, как его делать. Вот я и дал тебе такую ссылку. Знал бы сам, отвтил бы конкретнее.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
-
- Сообщения: 407
- Зарегистрирован: 13 сен 2004, 12:05
- Откуда: Курган
- Контактная информация:
Спасибо! Вот только ни разу не пользовался этой функцией - почитал хелп и не до конца соображу какие параметры она просит.
SetWindowsHookEx(WH_KEYBOARD,...,...,...);
Функцию нужно повесит на таймер? И проверять равен ли результат 0?
If SetWindowsHookEx(WH_KEYBOARD,...,...,...)<>0 then
SHowMessage('Клава сработала');
Что-то в этом духе?
SetWindowsHookEx(WH_KEYBOARD,...,...,...);
Функцию нужно повесит на таймер? И проверять равен ли результат 0?
If SetWindowsHookEx(WH_KEYBOARD,...,...,...)<>0 then
SHowMessage('Клава сработала');
Что-то в этом духе?
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто!
Да! Кстати! Ctrl+V реально вставляет!!! ХDD

Таймер здесь вообще не причём. Функцию надо пихнуть в дллку. А подробнее читай у тех, кто знает лучше меня.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
Dr_Grizzly, если коротко, то при вызове SetWindowsHookEx одним из параметров указывается адрес твоей callback-процедуры. Когда событие слуается, Windows вызывает эту процедуру. Т.е. самому проверять ничего не надо - "за вами придут" 
Есть тонкость, что, как отметил atavin-ta, эту функцию данном слуае обязательно надо вынести в DLL.

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