2011-05-11 52 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