2011-05-11 49 views
0

我想在keysroke後更改虛擬鍵,我使用原始輸入來獲取設備信息。 Actulay我有兩個鍵盤(一個鍵盤和一個條形碼掃描器)和原始輸入我可以得到keystorke來自一個。但是如果他們來自條形碼掃描器,我需要修改虛擬鍵。將它們改爲"KeyChar = Convert.ToChar(0);" 是可能的,那怎麼樣?更改鍵盤後的虛擬鍵併發送到應用程序

回答

0

我不知道你在問什麼,或者你所在的確切環境,但我已經與條形碼掃描儀使用的WinForms已經工作了,我只好先取了掃描的文本,改變一些關於要求它,然後將其發送到表單。捕捉擊鍵很容易,但你怎麼知道他們是否來自條形碼掃描儀或鍵盤?

我使用的技巧是條形碼格式。他們通常有一個開始和停止的標誌,像$。使用您的掃描儀和掃描記事本中的東西,你會看到。

然後使用此標誌作爲開始捕捉擊鍵的方式。因此,對於每一個$,你開始捕獲每一個下面的按鍵,然後在下一個$你停止捕獲,採取該字符串,並做任何你想要的。使用SendKeys將結果寫回表單(假設您至少已刪除了開始/停止標記)。

請注意,這隻適用於代碼xxx條形碼。對於GTIN標準,他們通常不使用開始或停止標誌,因此他們更棘手一些。

+0

ok.i知道那個。但是你怎麼能停止發送barcodescanner的輸入到其他apllication? – 2011-05-11 07:59:11

+0

@raha啊好吧,我不知道你想攔截掃描儀和其它應用程序之間的掃描數據。我假設掃描儀將數據發送到您自己的應用程序。當時可能還需要其他東西。 – 2011-05-11 08:10:15

+0

@ Kristoffer Jansson:任何方式感謝您的幫助。 – 2011-05-11 10:21:52

0

重寫PreProcessMessage並處理鍵盤消息。

+0

如何使用PreProcessMessage更改虛擬鍵? – 2011-05-11 08:01:24

+0

在信息 – jgauffin 2011-05-11 08:03:31

+0

替換它thanks.can你解釋它。這是正確的:如果(m.Msg == WM_KEYDOWN) { m.WParam =(IntPtr的)((鍵)Convert.ToChar(65)); } 返回base.PreProcessMessage(REF米); – 2011-05-11 10:18:39