• kashey © (16.03.18 23:26) [0]
    Зарегистрировал таким макаром горячую клавишу, но она Глобальная, как регистрировать произвольные горячие клавиши в пределах одного приложенияя?

    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;

  • Германн © (17.03.18 03:21) [1]
    Какую/Какие "горячую клавишу" вы хотите сделать? И для чего?
  • Германн © (17.03.18 03:21) [1]
    Какую/Какие "горячую клавишу" вы хотите сделать? И для чего?
  • kashey © (17.03.18 09:07) [3]
    Немного не то спросил в ночи. Поправлю вопрос по другому.

    1) Предположим, что у меня есть один пункт MainMenu, горячая клавиша которого "DEL"

    2) Помимо 1) Я должен ловить клавишу "DEL" в Form.OnKeyDown, даже если  пункт MainMenu Enabled = False;

    т.е. как только я назначил горячей клавишей "DEL" она перестала ловится в OnKeyDown. Может через WM_ можно как-то это обойти?
  • Leonid Troyanovsky © (17.03.18 09:28) [4]

    > kashey ©   (17.03.18 09:07) [3]

    > ловится в OnKeyDown. Может через WM_ можно как-то это обойти?

    Может Application/TApplicationEvents.OnMessage спасет ОРД.

    --
    Regards, LVT.
  • kashey © (17.03.18 10:06) [5]

    > Может Application/TApplicationEvents.OnMessage спасет ОРД.

    О спасло, спасибо!!!
    Только я дуб начинающий, не до конца понял зачем параметр Handled?

    procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
  • kashey © (17.03.18 10:19) [6]
    А и ещё, нажатую клавишу я нашел в wParam, где мне искать комбинацию?
  • Leonid Troyanovsky © (17.03.18 10:24) [7]

    > kashey ©   (17.03.18 10:06) [5]

    > Только я дуб начинающий, не до конца понял зачем параметр
    > Handled?

    Работает - не трожь.

    --
    Regards, LVT.
  • Leonid Troyanovsky © (17.03.18 10:29) [8]

    > kashey ©   (17.03.18 10:19) [6]

    > А и ещё, нажатую клавишу я нашел в wParam, где мне искать
    > комбинацию?

    Там все нажатия, комбинировать собс-ручно.

    --
    Regards, LVT.
  • kashey © (17.03.18 10:39) [9]
    Так как комбинировать то? Первая клавиша лежит в wparam, a вторая где?
  • Leonid Troyanovsky © (17.03.18 10:46) [10]

    > kashey ©   (17.03.18 10:39) [9]

    >  a вторая где?

    Вторая была когда-то первой.
    Можно и путем GetKeyboardState.

    Чудес не бывает.

    --
    Regards, LVT.
  • kashey © (17.03.18 11:28) [11]
    Понял, спасибо большое за помощь.
Есть новые Нет новых   [134427   +35][b:0][p:0.001]