1

我已经看到无数帖子和文章声称可以做我期望他们为我做的事情,遗憾的是,到目前为止,他们都没有给我解决方案或帮助我。

你看,我正在使用:https ://github.com/gmamaladze/globalmousekeyhook作为键盘挂钩......

现在,正如GlobalHookKeyPress事件中的用法所解释的那样,我正在尝试实现:

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

要捕获CTRL+ <'Put Captured KeyCode Here'> (例如CTRL+ A),但是,当我这样做时,它只是将“ CTRL+”写入 textBlock,而不是捕获的 Key ...现在如果我尝试这样做:


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

干杯!

4

0 回答 0