2016-11-28 72 views
0

我们为触摸设备编写了一个C#/ WPF应用程序,并已经实现了我们自己的虚拟键盘。自Windows 10周年(或更早)以来,我们在“平板电脑模式”中遇到设备问题。只要输入字段被关注,默认的OSK就会打开。对于一个应用程序禁用Windows 10 Tablet模式下的虚拟键盘

所以问题是:是否可以在我们的应用程序中禁用集成的OSK?如果没有,是否可以通过注册表或设置禁用我们的应用程序的OSK?

+1

*“,并媒体链接实现了自己的虚拟键盘上的”*这是你出了问题有。从来没有一个很好的理由来实现你自己的虚拟键盘,这个操作系统几乎是永久性的,所以解决方案是显而易见的:移除你的自定义虚拟键盘​​,并开始使用操作系统附带的一个。与一个保证是兼容的,一个已经完全调试,即使是所有的角落情况,一个会让你摆脱你所处的混乱,为此答案是“否” –

+2

@ CodyGray - 我们的应用程序是一个完整的POS应用程序因此,用户将永远不会与Windows联系。我们的键盘还实现了对我们的应用至关重要的定制功能。但是,感谢您的评论。简单的“否”会更有帮助。平板电脑模式对于少数使用平板电脑并出售在室外的用户来说只是一个角落案例。 – SirBirne

回答

4

我有完全相同的问题。基于this thread,我设法通过重写的TextBoxOnCreateAutomationPeer方法来禁用自动键盘(TabTip.exe)调用:

class MyTextBox : TextBox 
{ 
    protected override AutomationPeer OnCreateAutomationPeer() 
    { 
     return new FrameworkElementAutomationPeer(this); 
    } 
} 
+0

你是英雄! – SirBirne

0

正如在注释中指出的(并解释过),不可能为一个应用程序禁用OSK。我们通过禁用“触摸键盘和手写面板”服务来解决问题。目前它似乎是唯一的解决方案,但我并不完全满意。至少在我们的情况下,这是针对平板电脑和敞篷车的可承受的解决方法。