我们正在为一个内部信息亭建立一些软件。该软件是一个带嵌入式浏览器的基本.NET窗体。信息亭配有用户踩踏的垫子。当用户踩在垫子上时,它通过键盘发送一个键组合。当用户踩下垫子时,它会发送一个不同的组合键。捕获按键信息
我们想要做的是在我们的应用程序中查找按键组合,并根据用户是否打开或关闭导致浏览器转到其他网址。
你怎么钩住键盘来适应这种情况?
我们正在为一个内部信息亭建立一些软件。该软件是一个带嵌入式浏览器的基本.NET窗体。信息亭配有用户踩踏的垫子。当用户踩在垫子上时,它通过键盘发送一个键组合。当用户踩下垫子时,它会发送一个不同的组合键。捕获按键信息
我们想要做的是在我们的应用程序中查找按键组合,并根据用户是否打开或关闭导致浏览器转到其他网址。
你怎么钩住键盘来适应这种情况?
如果您的窗口是活动窗口,那么您可以简单地覆盖下面的表单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);
}
就在不久前,我在做有关USB读卡器的类似搜索。
我遇到了this article on CodeProject用于处理设备的原始输入。
我的主要目标是区分多个充当键盘的设备。您的设备可能有不同的界面。它也可能有一个SDK和文档。我们不知道。
如果您的应用程序是不是在主窗口,看看在RegisterHotkey的Win32 API,与p/invoke here一些信息。
非常有趣,因为我在这个项目上的下一个任务是与一个CDC读卡器连接,这个读卡器也可以用作键盘。 – Jeremy 2008-10-17 22:58:52