BreakPointMAN |
Отправлено: 03.08.2005, 02:29 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 86
|
Вообщем, встала такая проблема:
нужно отлавливать нажатия клавиш и их комбинаций (типа Ctrl+Alt+A или Alt+Shift+R или Alt+N или что-то в этом роде), когда приложение запущено, но не активно, и главная форма не в фокусе... ииии... потом как-то на эти нажатия реагировать... краем уха слышал что-то о хуках, что ставить винде надо...
Кто знает — если не трудно — киньте в меня ссылкой по этой теме или вкратце опишите, как сие на C++ Builder делается.
|
|
** avtoritet |
Отправлено: 03.08.2005, 02:47 |
|
Не зарегистрирован
|
Уверая тебя, заглянишь в google и найдешь там себе вполне исчерывающий ответ сам!
Иногда это называют сисетмными ловушками. |
|
olegenty |
Отправлено: 03.08.2005, 07:23 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
иногда-то называется, но искать лучше не в гугле, а тут и на xportal.ru по слову HOOK
|
|
Vlad |
Отправлено: 03.08.2005, 07:42 |
|
Машинист паровоза
Группа: Участник
Сообщений: 231
|
Используй RegisterHotKey(
HWND hWnd, // window to receive hot-key notification
int id, // identifier of hot key
UINT fsModifiers, // key-modifier flags
UINT vk // virtual-key code
); и обязательно UnregisterHotKey, плюс напишешь обработчик на событие, ни чего сложного. |
|
Konstantine |
Отправлено: 03.08.2005, 07:52 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
Для того чтоб хук когда форма неактивна — его нужно делать через DLL
|
|
Vlad |
Отправлено: 03.08.2005, 08:24 |
|
Машинист паровоза
Группа: Участник
Сообщений: 231
|
Это не хук! И DLL делать НЕ НАДО![QUOTE | нужно отлавливать нажатия клавиш и их комбинаций (типа Ctrl+Alt+A или Alt+Shift+R или Alt+N или что-то в этом роде), когда приложение запущено, но не активно, и главная форма не в фокусе... ииии... | Человек не просит сказать как сделать хук. В данном случае это hotkey. На приложение можно повесить кучу хоткеев, и если оно запущено и нажата необходимая комбинация, приложение будет делать что вы заложили в логике программы.
QUOTE | Windows provides a set of functions that applications can use to define hot keys. A hot key is a key combination that generates a WM_HOTKEY message, a message the system places at the top of a thread's message queue, bypassing any existing messages in the queue. Applications use hot keys to obtain high-priority keyboard input from the user. For example, by defining a hot key consisting of the CTRL+C key combination, an application can allow the user to cancel a lengthy operation.
To define a hot key, an application calls the RegisterHotKey function, specifying the combination of keys that generates the WM_HOTKEY message, the handle of the window to receive the message, and the identifier of the hot key. When the user presses the hot key, a WM_HOTKEY message is placed in the message queue of the thread that created the given window. The wParam parameter of the message contains the identifier of the hot key. The application can define multiple hot keys for a thread, but each hot key in the thread must have a unique identifier. Before the application terminates, it should use the UnregisterHotKey function to destroy the hot key. |
Попробуйте и увидите сами. Если же писать хук, то да лучше написать как положено DLL, хотя возможны извращения и без написания DLL
Вот некоторые ссылки про хуки:http://www.rsdn.ru/article/baseserv/hookdll.xml, http://www.rsdn.ru/article/baseserv/HookTo.../article/view/7 теперь статейка про хоткей http://www.realcoding.net/article/view/1848 |
|
BreakPointMAN |
Отправлено: 03.08.2005, 17:54 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 86
|
Спасибочки, глянем!..
|
|