我們正在爲一個內部信息亭建立一些軟件。該軟件是一個帶嵌入式瀏覽器的基本.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