日期:2014-05-17  浏览次数:20947 次

C# 控制WinForm在最前面,同时控制输入框
电脑+扫描枪 扫描条码。
在进入扫描枪扫描条码时,担心其他程序把焦点移走或鼠标点走了。扫描的条码就没有取到。

我想按了扫描button后,锁住整个电脑屏幕,让QQ,msn的弹出消息 以及 鼠标都点不到其他地方,同时限制光标在一个固定文本框。 当我按某个快捷键时,退出此限制。

有二个地方不知道怎么做。
1.怎么限制其他程序不会抢走我的这个窗口
2.怎么把光标限制在一个文本输入框

谢谢!




------解决方案--------------------
把QQ,msn等关掉不就可以了。

好的用户程序是不应该抢输入焦点的。
------解决方案--------------------
做一个定时器检查,失去焦点之后,再设回来!
但最好有个 checkbox ,是否这样做自动?
------解决方案--------------------
程序没焦点,不代表不运行!
------解决方案--------------------
一时还真想不出有什么办法。


有个问题: 扫描枪扫描条码时  为什么必须要有焦点?
------解决方案--------------------
你上班还有时间玩QQ,msn,你们老板真好?
------解决方案--------------------
你也不怕中招吗?
------解决方案--------------------
扫描枪,无非是键盘输入,搜搜 Hook 键盘消息
------解决方案--------------------
引用:
引用:程序没焦点,不代表不运行!


引用:一时还真想不出有什么办法。


有个问题: 扫描枪扫描条码时  为什么必须要有焦点?

程序是扫描产品条码,记录条码。最后保存到数据库。条码枪是无线的。
现在也没有什么问题,是我想把程序做得更完美。
举个例子:
客户启动你的程序,进入扫描……


我的问题就是为什么扫描的资料必须放到有焦点的textbox中?
------解决方案--------------------
引用:
一时还真想不出有什么办法。


有个问题: 扫描枪扫描条码时  为什么必须要有焦点?

他用的最简单的那种扫描枪。类似敲击键盘的。没有输入框,他就获不到值了。

------解决方案--------------------
引用:
引用:一时还真想不出有什么办法。


有个问题: 扫描枪扫描条码时  为什么必须要有焦点?
他用的最简单的那种扫描枪。类似敲击键盘的。没有输入框,他就获不到值了。

可以获取到,就是keydown事件,调用api来抓取.我们公司也有这个设备.
不过给客户用,软件说明里就应该规范,不然你考虑的东西太多了.
------解决方案--------------------
//FindWindow //查找特定窗口句柄 
//SetForegroundWindow // 设置为活动窗体,并激活
//SetFocus //设置焦点 
int hwnd = FindWindow(null, "Form1");
IntPtr p = new IntPtr(hwnd);
if (p == IntPtr.Zero)
   return;
SetForegroundWindow(p);
SetFocus(textBox3.Handle);

如果写外部程序里,需要用到FindWindowEx
获取(textBox3.Handle)子窗口句柄
------解决方案--------------------
貌似不容易,做软件你只要做到把窗口顶置,然后把焦点放到文本框就行了
------解决方案--------------------
这个很简单,放一个 Timer ,100毫秒,然后如下:
bool keepforce = true;

private void timer1_Tick(object sender, EventArgs e)
{
    if (keepforce)
    {
        this.Activate();
        textBox1.Focus();