在 Windows 10 平板电脑模式下为一个应用程序禁用虚拟键盘
Disable virtual Keyboard in Windows 10 Tablet Mode for one Application
我们为触摸设备编写了一个 C#/WPF 应用程序,并且已经实现了我们自己的虚拟键盘。自 windows 10 周年(或更早)以来,我们在 "Tablet Mode" 中遇到设备问题。只要输入字段获得焦点,默认 OSK 就会打开。
所以问题是:是否可以在我们的应用程序中禁用集成的 OSK?如果没有,是否可以通过注册表或设置为我们的应用程序禁用 OSK?
正如评论中指出(和解释)的那样,不可能只为一个应用程序禁用 OSK。我们通过禁用服务 "Touch Keyboard and Handwriting Panel" 解决了这个问题。目前这似乎是唯一的解决方案,尽管我并不完全满意。它是 - 至少在我们的情况下 - 平板电脑和敞篷车的一个可以忍受的解决方法。
我遇到了完全相同的问题。基于 this thread,我设法通过重写 TextBox
的 OnCreateAutomationPeer
方法来禁用自动键盘 (TabTip.exe) 调用:
class MyTextBox : TextBox
{
protected override AutomationPeer OnCreateAutomationPeer()
{
return new FrameworkElementAutomationPeer(this);
}
}
我们为触摸设备编写了一个 C#/WPF 应用程序,并且已经实现了我们自己的虚拟键盘。自 windows 10 周年(或更早)以来,我们在 "Tablet Mode" 中遇到设备问题。只要输入字段获得焦点,默认 OSK 就会打开。
所以问题是:是否可以在我们的应用程序中禁用集成的 OSK?如果没有,是否可以通过注册表或设置为我们的应用程序禁用 OSK?
正如评论中指出(和解释)的那样,不可能只为一个应用程序禁用 OSK。我们通过禁用服务 "Touch Keyboard and Handwriting Panel" 解决了这个问题。目前这似乎是唯一的解决方案,尽管我并不完全满意。它是 - 至少在我们的情况下 - 平板电脑和敞篷车的一个可以忍受的解决方法。
我遇到了完全相同的问题。基于 this thread,我设法通过重写 TextBox
的 OnCreateAutomationPeer
方法来禁用自动键盘 (TabTip.exe) 调用:
class MyTextBox : TextBox
{
protected override AutomationPeer OnCreateAutomationPeer()
{
return new FrameworkElementAutomationPeer(this);
}
}