2013-09-26 53 views
1

我正在寫一個系統托盤應用程序,用於偵聽USB條形碼掃描器並在讀取匹配條形碼後啓動Internet站點。 (條形碼掃描器提供按鍵輸入,如鍵盤)。 基於此文章Distinguishing Barcode Scanners from the Keyboard in WinForms從其他線程中阻止或吞嚥擊鍵

我設法寫這些功能:掃描條碼,即使它在後臺運行,沒有焦點

  1. 程序監聽所有WM_IMPUT消息,並「捕獲」。

  2. 該程序知道它是否是用戶鍵入鍵盤或條形碼掃描儀掃描,並且只選擇來自掃描儀的輸入(但條形碼作爲常規鍵發送到前景窗口(即焦點)因爲掃描儀像鍵盤一樣起作用)。

我需要做的唯一事情是這樣的: 3.如果輸入的條形碼掃描儀附帶 - >被髮送到任何其他應用程序或線程阻止它。 (假設您正在撰寫電子郵件,然後掃描 - 我不希望將條形碼「輸入」到您的電子郵件中)。

請幫忙:是否可以阻止所有其他線程的「擊鍵」?怎麼做?

感謝, 哈薩

+0

本文介紹瞭如何做到這一點,並展示了所涉及的問題。 http://nicholas.piasecki.name/blog/2009/02/distinguishing-barcode-scanners-from-the-keyboard-in-winforms/ – adrianm

+0

這篇鏈接文章說的都是錯誤的。使用低級鍵盤鉤子過濾鍵擊更容易,只需從回調中返回一個非零值即可。有大量的C#代碼實現了WH_KEYBOARD_LL鉤子。 –

+0

@ hanspassant,有趣。你怎麼知道鍵盤是否來自條形碼掃描器的低級別鉤子? – adrianm

回答

0

看一看this鏈接
這個方法應該阻止所有輸入(希望您的掃描儀仍然會通過,雖然)。