| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как перехватить нажатие определённых клавиш |
| Автор: начинающий_на_Дельфи 12.7.2004, 13:32 |
| Подскажите, пожалуйста, как перехватить нажатие определённых клавиш, когда активно не твоё приложение. |
| Автор: Albinos_x 12.7.2004, 13:40 | ||
А вообще здесь есть тема, не помню как называется, там я подробнее пример делаю |
| Автор: начинающий_на_Дельфи 12.7.2004, 22:48 |
| Как пользоваться тем, что зарегистрировал? |
| Автор: Albinos_x 13.7.2004, 00:31 | ||
|
| Автор: <Spawn> 13.7.2004, 07:25 |
| начинающий_на_Дельфи Так же можно воспользоваться хуком. Делай поиск по функциям SetWindowsHookEx, CallNextHookEx, UnHookWindowsHookEx |
| Автор: начинающий_на_Дельфи 13.7.2004, 08:39 |
| Дело сдвинулось, большое спасибо!!! А этими функциями я хотел воспользоваться, но не нашёл их точного описания. |
| Автор: Medved 13.7.2004, 09:04 | ||
|
| Автор: Gwire 13.5.2011, 00:48 | ||
Походу "разбирательства" возник вопрос:
Вопроос: Если SetWindowsHookEx натравить на HInstance основной программы, а не DLL-ки то процедера ProcHook не вополняется. Как это понимать, Почему ей не подходит HInstance основной программы? |
| Автор: bems 13.5.2011, 14:52 |
| Потому что для выполнения процедуры хука в чужом процессе (там где произошло перехватываемое событие) нужно загрузить в него эту процедуру. Поскольку другого способа кроме как загрузить туда длл в системе не предусмотрено, то процедура хука должна быть в длл, и в SetWindowsHookEx нужно указать какую именно длл нужно загружать (длл идентифицируется своим HMODULE, он же HINSTANCE, он же указатель на начало длл в памяти) |
| Автор: MetalFan 13.5.2011, 18:03 |
| Вместо HInstance указать 0, далее в сл.параметре вместо 0 (ThreadID) указать GetCurrentThreadID. |