按下热键后,听取接下来的5次按键操作

时间:2016-11-20 10:30:56

标签: c# keycode

我对c#很陌生,我试图创建一个小型系统托盘应用程序,它根据短文本和热键粘贴活动窗口中的内容(发送CTRL + V命令)写在窗口。

实施例。如果在记事本中键入| hl,则应用程序将在活动窗口中粘贴Hello。

到目前为止,我根据找到的here示例,使用NotifyIcon将应用程序设置为系统中的stat,并且能够设置键盘挂钩以侦听按键事件。

我现在需要的是:

if(e.KeyCode.ToString() == "OemPipe") //if hotkey is pressed
{
    //listen for the next 5 KeyCode
    if(//next 5 KeyCode are A, B, C, D and E)
    {
         //do stuff
    }
    else
    {
        //ignore and listen for hotkey again
    }
}

我一直在撞墙试图找几天如何做到这一点,但我甚至无法找到让我开始的东西。

任何想法都会非常感激,如果你有一个代码样本,那就更好了。

1 个答案:

答案 0 :(得分:1)

我会试着伸手。

我假设您正在通过KeyEventArgs对象接收密钥代码,如果您滚动浏览其属性,您会发现两个有趣的内容:

KeyEventArgs.Modifiers
KeyEventArgs.Shift

使用CTRL,ALT或SHIFT按键时,如果按键被锁定,那么在您的代码中,您可以添加到一个数组中,按住这些热键时按键被连续按下,如果找到正确的组合则执行某些操作或者只是清除数组,如果下一个键没有出现任何修饰符。

Somehing如:

private void button1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) 
{

   if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) 
   {
       AddtoShiftArray(e.keyCode);
       clearAllOtherBuffers(); //ignore and listen for hotkey again

       if(seeIFWithWhatIHaveHereICanDoStuff()){
           doMyStuff();
           clearShiftBuffer();
       }
   }
   //Same for ctrl
   //Same for alt

}

希望这有帮助! :d