首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否以编程方式在文本框中隐藏Win7触摸键盘提示?VB.net WPF应用程序

是否以编程方式在文本框中隐藏Win7触摸键盘提示?VB.net WPF应用程序
EN

Stack Overflow用户
提问于 2014-10-03 23:46:32
回答 1查看 1.1K关注 0票数 0

我有一个最初在VB.net 2010Express中开发的WPF应用程序。它在Windows XP上运行得很好,在非触摸屏的Windows7机器上也运行得很好。

这款应用程序是为触摸屏设计的,它的用户界面经过了整理,可以用来编辑数字等大按钮。它甚至还有一个小屏幕键盘,上面只有应用程序所需的按钮,所以你无法进入Windows。

不幸的是,我现在需要使用99.9%的代码来为Windows7触摸屏机器开发新版本的应用程序。它有合适的触摸屏驱动程序(万岁!)而不是鼠标模拟(boo),但每当你突出显示一个文本框时,它都会使Win7的小提示“打开OSK”出现,它卡住了我的UI顶部。

图片在这里:http://i.imgur.com/W8XthZF.jpg

我能不能以某种方式将TextBox调整为“不显示Win7 OSK提示符”?我现在使用的是Visual Studio Express 2013,仍然是用VB.net编程,但目标是.NET 4.5.2。

显然,最糟糕的解决方案是将TextBox向下移动足够远,这样就不会重叠,但我也想删除一种方便的方式,让用户启动Win7屏幕上的键盘,只需按下win键,然后开始玩纸牌或其他游戏。

EN

回答 1

Stack Overflow用户

发布于 2014-10-03 23:58:03

键盘由一个名为tabtip.exe的进程处理,通常位于@"C:\Program Files\Common Files\microsoft shared\ink\tabtip.exe“中;

1)您可以终止进程:

代码语言:javascript
复制
                var p = Process.GetProcesses();
                var n = p.Where(x => x.ProcessName.ToLower().Contains("tabtip"));
                foreach (var item in n)
                {
                    try
                    {
                        item.CloseMainWindow();
                        //item.Kill(); 
                    }
                    catch { }
                }

2)使用windows 32消息来隐藏(我的经验是这并不总是有效的):

代码语言:javascript
复制
    var p = Process.GetProcesses();
    var n = p.Where(x => x.ProcessName.ToLower().Contains("tabtip")).FirstOrDefault();
    if (n != null)
    {
        n.CloseMainWindow();
    }

或者是其中的一个

代码语言:javascript
复制
        //  SendMessage(_keyboardProcess.Handle, WS_MINIMIZE, IntPtr.Zero, IntPtr.Zero);
        //  SendMessage(_keyboardProcess.Handle, WM_CLOSE, IntPtr.Zero, IntPtr.Zero);
        //  SendMessage(_keyboardProcess.Handle, WM_QUIT, IntPtr.Zero, IntPtr.Zero);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26182305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档