| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Зажимка клавишь в любом окне и в любом месте |
| Автор: InfMag 2.9.2005, 17:54 |
| Подскажите как мне допустим сочетание клавишь Ctrl+Q назначить на определенную функцию и чтобы это сочетание всегда работало, а не только пока на прогамме есть фокус. То-бишь я могу свернуть программу, спрятать да и вобще что угодно, а сочетание в любом случае выполняло функцию? Заранее спасибо. |
| Автор: _hunter 2.9.2005, 18:04 |
| RegisterHotKey() и в качестве id дать результат GlobalAddAtom() |
| Автор: InfMag 2.9.2005, 18:10 |
| Аможно хоть маленький примерчик с зажатием Ctrl+Shift? |
| Автор: _hunter 2.9.2005, 18:14 |
| упс.... промахнулся с темой ( хотя про поиск -- тру ) RegisterHotKey(hWnd, GlobalAddAtom("my hot key"), MOD_CONTROL | MOD_SHIFT, 0x51); b будет тебе глобальная ctrl + shift + q |
| Автор: InfMag 2.9.2005, 18:24 |
| А выполнить код по нажатию Ctrl+Shift? Добавлено @ 18:30 И чтобы кроме моего кода другие проги не хватали клавиши. Чтобы при нажатии Ctrl+Shift не менялся язык... |
| Автор: _hunter 2.9.2005, 18:31 |
| лови WM_HOTKEY ( можно тем же TApplicationEvents::OnMessage ) |
| Автор: InfMag 2.9.2005, 18:36 |
| Ну как ловить то? Я ничего так понять не могу. Я не профи в апи. Добавлено @ 18:46 Вот моя задача: 1. Перехватить нажатие клавишь Ctrl+Shift 2. Не позволить ничему выполнить это зажатие, в том числе и сделать так, чтобы при их зажатии не менялся язык 3. Выполнить любой свой код по нажатию Ctrl+Shift 4. Сделать так, чтобы зажатие работало и перехватывалось независимо от того есть ли фокус на форме. И сделать тоже самое не с зажатием Ctrl+Shift, а по нажатию буквы Q |
| Автор: _hunter 2.9.2005, 18:48 |
| а апи тут при чем? это компонент от борланда. кидаеш его на форму, назначаеш обработчик OnMessage() в нем пишеш if ( Msg.message == WM_HOTKEY ) { ... } и все... ( конечно правельнее было бы switch, но это мелочи ) насчет просто Ctrl + Shift -- это только хуком |