【问题标题】:Programmatically hide Win7 touch keyboard prompt in text box? VB.net WPF app以编程方式在文本框中隐藏 Win7 触摸键盘提示? VB.net WPF 应用程序
【发布时间】:2014-11-28 17:02:43
【问题描述】:

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

该应用程序专为触摸屏使用而设计,其 UI 带有用于编辑数字等的大按钮。它甚至还有一个小屏幕键盘,只有应用程序所需的按钮,因此您无法进入 Windows。

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

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

我可以通过某种方式调整 TextBox 以说“不显示 Win7 OSK 提示符”吗? FWIW 我现在使用 Visual Studio Express 2013,仍在 VB.net 中编程,但目标是 .NET 4.5.2。

显然,janky 的解决方案是将 TextBox 向下移动到足够远的地方,以免重叠,但我还想删除一种方便的方式,让用户启动 Win7 屏幕键盘并按下 win 键并开始玩纸牌或其他游戏。

【问题讨论】:

    标签: wpf vb.net windows-7 touchscreen


    【解决方案1】:

    键盘由一个名为 选项卡提示程序 通常站点在@"C:\Program Files\Common Files\microsoft shared\ink\tabtip.exe";

    1) 你可以杀死进程。:

                    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消息隐藏(我的经验是不总是有效):

        var p = Process.GetProcesses();
        var n = p.Where(x => x.ProcessName.ToLower().Contains("tabtip")).FirstOrDefault();
        if (n != null)
        {
            n.CloseMainWindow();
        }
    

    或其中之一

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

    【讨论】:

    • 感谢您的想法。我没有将其标记为已接受的答案,因为我没有尝试过 - 我注意到我实际上可以通过在 Windows 控制面板中游荡一些来禁用作为主要问题的功能。 Windows 7 的触摸控件非常杂乱无章,其中一些隐藏在 XP/Vista 平板电脑遗留的 Ink 部分中。我认为那个部分控制着这个 tabtip 程序,所以我只是在那里把它关掉了。
    猜你喜欢
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多