В Windows 10 почему встроенная клавиатура не отображается для Visual Basic InputBox?

Я впервые установил 32-разрядное настольное приложение на Windows 10 Pro x64. Ранее он был успешно использован в Windows 7.

Это ПК с внешним монитором с сенсорным экраном, который используется в режиме киоска, поэтому единственное, что доступно пользователю, - это сама программа. Без физической клавиатуры или закрытия программы они не видят панель задач или системный трей.

В разделе "Настройки / Устройства / Набор текста" я выбрал "Показывать сенсорную клавиатуру или панель рукописного ввода, когда не в режиме планшета и не подключена клавиатура".

Приложение имеет только несколько мест, которые позволяют пользователю печатать. Клавиатура прекрасно отображается при входе в Windows и на экранах, которые используют TextBox. Но есть пара мест, которые используют общий диалог InputBox, и клавиатура не появляется.

Я пробовал "Добавить стандартную раскладку клавиатуры в качестве опции сенсорной клавиатуры", которая, похоже, не дала эффекта.

Настройка автоматического запуска OSK, что я и делал в Windows 7, в лучшем случае неудобна, потому что вы не можете минимизировать ее, не потеряв ее в скрытый системный трей, и она слишком велика по сравнению с другой клавиатурой.

Есть ли другая настройка, которую мне нужно проверить, чтобы она работала?

Обновление. Причина, по которой TextBox открывает клавиатуру, заключается в том, что ей назначен символ пароля. Обычный TextBox также не переносит клавиатуру вперед.

1 ответ

Решение

Работая с программой и проводя дальнейшие исследования, я могу обобщить, где автоматически появляется клавиатура с программой WinForm.

  • TextBox с PasswordChar набор свойств.
  • ComboBox с DropSownStyle свойство установлено в DropDown,

Я обнаружил, что не было никакого способа получить InputBox использовать на ощупь. В итоге я создал пользовательскую форму с TextBox и добавил некоторые пользовательские процедуры к событиям Enter и Leave TextBox,

Так как это не сайт программирования, я буду коротким.

Я использовал TabletDeviceCollection чтобы увидеть, был ли компьютер TabletDevice с Type из TabletDeviceType.Touch,

Если это так, я запустил клавиатуру так:

Process.Start("C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe")

Затем, чтобы закрыть его, я назвал неуправляемым Win32 функция FindWindow("IPTIP_Main_Window", "") чтобы получить дескриптор, а затем вызвал другой WIn32, чтобы отправить ему сообщение. SendMessage(handle, WM_SYSCOMMAND, SC_CLOSE, 0)

Для получения дополнительной информации поиск по этим фразам.

Другие вопросы по тегам