2008-10-17 71 views
1

我们正在为一个内部信息亭建立一些软件。该软件是一个带嵌入式浏览器的基本.NET窗体。信息亭配有用户踩踏的垫子。当用户踩在垫子上时,它通过键盘发送一个键组合。当用户踩下垫子时,它会发送一个不同的组合键。捕获按键信息

我们想要做的是在我们的应用程序中查找按键组合,并根据用户是否打开或关闭导致浏览器转到其他网址。

你怎么钩住键盘来适应这种情况?

回答

2

如果您的窗口是活动窗口,那么您可以简单地覆盖下面的表单ProcessCmdKey。

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    const int WM_KEYDOWN = 0x100; 
    const int WM_SYSKEYDOWN = 0x104; 

    if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN)) 
    { 
     switch (keyData) 
     { 
      case Keys.Down: 
       this.Text = "Down Arrow Captured"; 
       break; 

      case Keys.Up: 
       this.Text = "Up Arrow Captured"; 
       break; 

      case Keys.Tab: 
       this.Text = "Tab Key Captured"; 
       break; 

      case Keys.Control | Keys.M: 
       this.Text = "<CTRL> + M Captured"; 
       break; 

      case Keys.Alt | Keys.Z: 
       this.Text = "<ALT> + Z Captured"; 
       break; 
     } 
    } 

    return base.ProcessCmdKey(ref msg, keyData); 
} 
1

就在不久前,我在做有关USB读卡器的类似搜索。

我遇到了this article on CodeProject用于处理设备的原始输入。

我的主要目标是区分多个充当键盘的设备。您的设备可能有不同的界面。它也可能有一个SDK和文档。我们不知道。

+0

非常有趣,因为我在这个项目上的下一个任务是与一个CDC读卡器连接,这个读卡器也可以用作键盘。 – Jeremy 2008-10-17 22:58:52