Ключевое событие + клавиши-модификаторы не работают должным образом

Я видел множество постов и статей, в которых утверждается, что они делают то, что я от них ожидаю, к сожалению, ни один из них не дал мне решения и не помог мне до сих пор.

Видите ли, я использую: https://github.com/gmamaladze/globalmousekeyhook в качестве крюка клавиатуры...

Теперь, как поясняется использование в событии GlobalHookKeyPress, я пытаюсь реализовать:

if ((Control.ModifierKeys & Keys.Control) == Keys.Control)
 {
    textBlock.Text = string.Format("CTRL + {0}", e.KeyChar);
 }

Однако, чтобы захватить CTRL + CTRL + A), когда я делаю это таким образом, он просто записывает " CTRL +" в textBlock, а не захваченный ключ... Теперь, если я попробуйте вместо этого:


int key = Convert.ToInt32(e.KeyChar);
 if ((Control.ModifierKeys & Keys.Control) == Keys.Control)
 {
     textBlock.Text = string.Format("CTRL + {0}", key);
 }

он правильно пишет CTRL + "KeyCode", однако, он дает мне правильный, но в его "числовой" форме, теперь, что я должен был бы сделать, чтобы сделать его " CTRL + A ", а не " CTRL +" 1 "?


Я попробовал один способ, но он показался слишком сложным и, вероятно, бесполезным, так как могли бы быть лучшие способы реализовать то, что я ищу, вот что я сделал:

int key = Convert.ToInt32(e.KeyChar);
if ((Control.ModifierKeys & Keys.Control) == Keys.Control)
{
    switch (key)
    {
        case 1:
            textBlock.Text = "CTRL + A";
            break;
        ...
        default:
            break;
    }
}

Теперь моя идея состоит в том, чтобы, где вы видите ... явно продолжать писать (случай 19 для " CTRL + S " и т. Д.), Но, как вы можете видеть, это окажется слишком утомительным для задачи... Что бы вы порекомендовали сделать для этого особого случая.


ОБНОВЛЕНИЕ № 1

Хорошо, так что я продолжал копать, и это заставило это работать, я не знаю как, но он просто сделал это

Теперь я сталкиваюсь с небольшой проблемой... Чтобы зарегистрировать нажатие клавиши, я должен нажать целевую клавишу дважды... или даже нажать другую клавишу, затем вернуться к целевой клавише, и затем она зарегистрируется, как некоторые вроде задержки, позвольте мне объяснить...

Я хочу нажать CTRL + A, я нажимаю CTRL + A, и он ничего не делает, однако, если я нажимаю CTRL + B, кажется, что он ничего не сделал, и просто ничего не отображается, однако, если я нажимаю CTRL + B, затем возвращаемся к CTRL + A, он правильно отображает CTRL + A, надеюсь, вы понимаете меня... Теперь я не знаю, что происходит, но я копаюсь, если вы знаете, пожалуйста, поделитесь им со мной Буду очень полезно:D

Ура!

0 ответов

Другие вопросы по тегам