Отключить виртуальную клавиатуру в режиме планшета Windows 10 для одного приложения

Мы написали приложение C # / WPF для сенсорных устройств и уже реализовали нашу собственную виртуальную клавиатуру. Начиная с Windows 10 (или более ранней) у нас возникают проблемы с устройствами в «Режиме планшета». OSK по умолчанию открывается всякий раз, когда фокусируется поле ввода.

Возникает вопрос: можно ли отключить встроенную OSK в нашем приложении? Если нет, можно ли отключить OSK ДЛЯ ПРОСТО НАШЕГО ПРИЛОЖЕНИЯ через реестр или настройки?


person SirBirne    schedule 28.11.2016    source источник
comment
'и уже реализовали нашу собственную виртуальную клавиатуру Здесь вы ошиблись. У нас никогда не было веских причин для реализации вашей собственной виртуальной клавиатуры, ОС поставляется с ней практически навсегда. Итак, решение очевидно: удалите свою настраиваемую виртуальную клавиатуру и начните использовать ту, что поставляется с ОС. Тот, с которым пользователь будет знаком, тот, который гарантированно будет совместим, и тот, который был полностью отлажен даже для всех критических случаев. И тот, который поможет вам выбраться из той неразберихи, в которой вы оказались, и ответ на этот вопрос отрицательный.   -  person Cody Gray    schedule 28.11.2016
comment
@CodyGray - Наше приложение представляет собой полноценное POS-приложение, поэтому пользователь никогда не будет связываться с Windows. Наша клавиатура реализует дополнительные пользовательские функции, которые жизненно важны для нашего приложения. Но спасибо за ваш комментарий. Простое «нет» было бы более полезным. Режим планшета - это просто случай для нескольких пользователей, у которых есть планшеты и которые продают на открытом воздухе.   -  person SirBirne    schedule 28.11.2016


Ответы (2)


У меня была точно такая же проблема. На основе этот поток, мне удалось отключить автоматический вызов клавиатуры (TabTip.exe), переопределив OnCreateAutomationPeer метод TextBox:

class MyTextBox : TextBox
{
    protected override AutomationPeer OnCreateAutomationPeer()
    {
        return new FrameworkElementAutomationPeer(this);
    }
}
person Stalker    schedule 19.01.2017
comment
Ты герой! - person SirBirne; 20.01.2017
comment
Как добиться того же для Passwordbox? - person Pratik Parikh; 13.03.2019

Как указано (и объяснено) в комментариях, нет возможности отключить OSK только для одного приложения. Решили проблему отключением сервиса «Сенсорная клавиатура и панель рукописного ввода». В настоящее время это кажется единственным решением, хотя я не полностью удовлетворен. Это - по крайней мере, в нашем случае - терпимое решение для планшетов и кабриолетов.

person SirBirne    schedule 28.11.2016