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

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

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

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

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

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

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

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

1 ответ1

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)

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .