textbox 如何判断是手动输入还是扫描枪输入。。。

moguizizi1 2009-09-25 06:17:31
textbox 如何判断是手动输入还是扫描枪输入。。。

做了一个程序 需要刷卡的, 那个卡只可以用 扫描枪 读取卡号 的

但是 这个卡不需要密码,怎么去防止 收银员,去手动恶意输入 卡号盗取比人金额

我想 是否可以从输入的时间上判断??

怎么判断 textbox 不是人为通过键盘输入?

或者限制键盘输入 但是键盘输入限制了 扫描枪也打不进去了。。。。

===========================这样写不行啊 扫描枪也打不进去了
public void textbox_KeyPress(Object sender, ......)
{
if(e.KeyChar < 48)
{
e.Handled=true;
}
}
==========================这样写不行啊 扫描枪也打不进去了


各位高手指点下。
...全文
2531 77 打赏 收藏 转发到动态 举报
写回复
用AI写文章
77 条回复
切换为时间正序
请发表友善的回复…
发表回复
googlg 2012-09-11
  • 打赏
  • 举报
回复
我用的HandHeld的扫描枪,这种枪是怎么工作的?读条码的时候也是一个一个的读取的吗???


[Quote=引用 25 楼 的回复:]

没用 扫描枪读取 数字没有 走程序里面走

也就是这样 程序有个 textbox 然后扫描枪自动 扫取号码

直接付值给 textbox

而且数字 是一个一个出来的。。

比如说 卡号 1234656789

是从 1 - 9 就像手动输入一样一个一个读出来。 当然扫描速度 比较快而已
[/Quote]
qq315133133 2012-08-01
  • 打赏
  • 举报
回复
你给TextBox 加个键盘监听的JS事件
arunayang 2010-04-12
  • 打赏
  • 举报
回复
把键盘改为小键盘,然后在Text1_KeyUp中看keycode(也就是键盘键值),如果大于96(0键),小于105(9键)那么就认为是手工输入。
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
If (KeyCode >= 96 And KeyCode <= 105) Then
Text1.Text = ""
End If
End Sub
xxbd123 2009-09-26
  • 打赏
  • 举报
回复
用时间差判断的吗?
moguizizi1 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 67 楼 xxbd123 的回复:]
void TextBox13_KeyPress(object sender, KeyPressEventArgs e)
{
if (Convert.ToInt16(e.KeyChar)==22)
{
e.Handled=true;
}
}

加个这个 防ctrl+v
[/Quote]


这个我会 不过还是要谢谢你
xxbd123 2009-09-26
  • 打赏
  • 举报
回复
void TextBox13_KeyPress(object sender, KeyPressEventArgs e)
{
if (Convert.ToInt16(e.KeyChar)==22)
{
e.Handled=true;
}
}

加个这个 防ctrl+v
xxbd123 2009-09-26
  • 打赏
  • 举报
回复
MaxLength.................................的意思是
moguizizi1 2009-09-26
  • 打赏
  • 举报
回复
if(this.textBox13.Length==10)
这样又OK了 我疯
moguizizi1 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 62 楼 xxbd123 的回复:]
文本框还要判断长度 当长度等于编号的长度 光标自动移动到下一个 文本框
[/Quote]


妈的 今天见鬼了

我刚刚就是同时判断时间的..

private void textBox13_TextChanged(object sender, System.EventArgs e)
{
this.label1.Text=System.DateTime.Now.ToString();


if(this.textBox13.MaxLength==10)
{
this.label2.Text=System.DateTime.Now.ToString();
}
}
一开始这段代码还用了几次能行..

操 现在 我输入 到10字符 P用没有了.. label2.Text 始终是空的我擦
xxbd123 2009-09-26
  • 打赏
  • 举报
回复
在来个烂办法!!! 加密

MD5加密!!!叫他输

passwordchar *
xxbd123 2009-09-26
  • 打赏
  • 举报
回复
文本框还要判断长度 当长度等于编号的长度 光标自动移动到下一个 文本框
xxbd123 2009-09-26
  • 打赏
  • 举报
回复
又想到一个烂方法 看看 弄一个timer 在光标在上面 并且 打了第一个字符的时候开始(打第一个字符时,timer代码跳过),几秒种后随即产生几个数 最后判断长度
moguizizi1 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 57 楼 alifriend 的回复:]
你这是代码赋值,不是键盘输入。扫描枪就是个键盘,扫描完就是键盘输入,只能用时间来判断了。
[/Quote]

对对对...
moguizizi1 2009-09-26
  • 打赏
  • 举报
回复
[Quote=引用 53 楼 alifriend 的回复:]
楼主说的扫描枪我知道是怎么回事,我现在就供职于一家规模不小的鞋服企业,这里出入库都是用扫描枪

也许扫描枪有很多种,所以楼上有人觉得扫描枪还有什么特殊的输入方法。但至少我们用的扫描枪应该和楼主是一样的,是采用键盘录入的形式,也就是扫到的结果是以键盘按键的方式输入的,效果与你自己用键盘按数字完全一样,只是比较快而已。通俗点来说,所插的扫描枪实际上就是个键盘,扫描完实际上就是快速的按键盘上的按键输入,所以必然触发key_press,而且readonly也必然无法输入。

算时间的方法是可行的,用GetTickCount函数取得输入的时间差,小于多少的就判断为非扫描枪输入,再把粘贴事件屏蔽了就行了。
[/Quote]


兄弟 啊 眼泪啊...

就是你说的情况啊 ...............
xxbd123 2009-09-26
  • 打赏
  • 举报
回复
哦~这样行不行

收款机 应该是统一的吧

当焦点在 框里的时候 屏蔽 键盘的PS/2口 或者usb口

STUDYNET2009 2009-09-26
  • 打赏
  • 举报
回复
Flyingdragon168 2009-09-26
  • 打赏
  • 举报
回复
控制鍵盤在那個欄位上,除了可以輸入一些特殊鍵之外,其它任何鍵輸入時,通過KyePress事件,把鍵值改為0(即不讓輸入)。
kennie_190602169 2009-09-26
  • 打赏
  • 举报
回复
ding
lnwuyaowei 2009-09-26
  • 打赏
  • 举报
回复
第一个按键按下,开始计时,最后回车键按下,结束计时,中间如超一秒,可视为手工输入.
shadow_2006 2009-09-26
  • 打赏
  • 举报
回复
睡觉!
加载更多回复(57)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧