Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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 -- это только хуком

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)