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();