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

1587
Rich Shealer

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

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

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

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

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

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

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

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

0
Я думаю, что опция «Показать сенсорную клавиатуру ...» заставляет значок клавиатуры появляться в системном трее, поэтому, если он скрыт, это не будет иметь никакого значения. Трудно сказать по вашему сообщению, но если у вас есть доступ к исходному коду, вы можете написать put в обработчике событий, который запускает исполняемый файл сенсорного экрана при каждом нажатии на поле ввода. Я сделал это как обходной путь раньше. BrianC 8 лет назад 0
запускать устройство в режиме планшета все время, здесь всегда должна отображаться клавиатура magicandre1981 8 лет назад 0
@ magicandre1981 То же самое в режиме планшета. Rich Shealer 8 лет назад 0
@BrianC У меня есть доступ, но я пытался избежать изменения источника. Я не думаю, что у меня есть выбор, хотя. Rich Shealer 8 лет назад 0
Можете ли вы предоставить (github) небольшое демонстрационное приложение (2 входа, 1 были показаны OSK, а 1 нет), вы видели проблему? magicandre1981 8 лет назад 0
@ magicandre1981 похоже, что ответ будет невозможен. Смотрите мое редактирование в ОП. Мне придется проверить, выставляя системный трей пользователю. Rich Shealer 8 лет назад 0

1 ответ на вопрос

1
Rich Shealer

Работая с программой и проводя дальнейшие исследования, я могу обобщить, где автоматически появляется клавиатура с программой 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)

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

Похожие вопросы