В 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)
Для получения дополнительной информации поиск по этим фразам.