-
Зарегистрировал таким макаром горячую клавишу, но она Глобальная, как регистрировать произвольные горячие клавиши в пределах одного приложенияя? procedure TMainForm.FormCreate(Sender: TObject);
begin
del_id := GlobalAddAtom('del');
RegisterHotKey(Handle, del_id, 0, VK_DELETE);
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Handle, del_id);
GlobalDeleteAtom(del_id);
end;
-
Какую/Какие "горячую клавишу" вы хотите сделать? И для чего?
-
Какую/Какие "горячую клавишу" вы хотите сделать? И для чего?
-
Немного не то спросил в ночи. Поправлю вопрос по другому.
1) Предположим, что у меня есть один пункт MainMenu, горячая клавиша которого "DEL"
2) Помимо 1) Я должен ловить клавишу "DEL" в Form.OnKeyDown, даже если пункт MainMenu Enabled = False;
т.е. как только я назначил горячей клавишей "DEL" она перестала ловится в OnKeyDown. Может через WM_ можно как-то это обойти?
-
> kashey © (17.03.18 09:07) [3]
> ловится в OnKeyDown. Может через WM_ можно как-то это обойти?
Может Application/TApplicationEvents.OnMessage спасет ОРД.
-- Regards, LVT.
-
> Может Application/TApplicationEvents.OnMessage спасет ОРД.
О спасло, спасибо!!! Только я дуб начинающий, не до конца понял зачем параметр Handled?
procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
-
А и ещё, нажатую клавишу я нашел в wParam, где мне искать комбинацию?
-
> kashey © (17.03.18 10:06) [5]
> Только я дуб начинающий, не до конца понял зачем параметр > Handled?
Работает - не трожь.
-- Regards, LVT.
-
> kashey © (17.03.18 10:19) [6]
> А и ещё, нажатую клавишу я нашел в wParam, где мне искать > комбинацию?
Там все нажатия, комбинировать собс-ручно.
-- Regards, LVT.
-
Так как комбинировать то? Первая клавиша лежит в wparam, a вторая где?
-
> kashey © (17.03.18 10:39) [9]
> a вторая где?
Вторая была когда-то первой. Можно и путем GetKeyboardState.
Чудес не бывает.
-- Regards, LVT.
-
Понял, спасибо большое за помощь.
|