Ну, я думаю, что поздний ответ лучше, чем отсутствие ответа, так что вот оно:
Вы можете отключить экранную клавиатуру Windows для своего приложения.
Для этого запустите Regedit и перейдите к ключу [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ TabletTIP \ DisableInPlace]. Там вы создаете новое строковое значение, задаете для его имени полный путь к приложению (например, «C: \ Progam Files \ My App \ MyApp.exe») и задаете для него значение «1».
Редактировать: Недавно мне пришлось переосмыслить свое решение ... Установив значение реестра, вы отключаете экранную клавиатуру для всего приложения. Но если вам нужна клавиатура для некоторых редко используемых функций вашей программы и просто случайно забыть, включая экранную клавиатуру, вы должны управлять Windows TextInputPanel через SDK / API. Смотрите эту ссылку: Программно отключение панели ввода .
Используйте PenInputPanel для рукописного ввода и TextInputPanel для экранной клавиатуры.
Для всех этих программистов на Delphi: импортируйте библиотеку типов «Microsoft PenInputPanel» и исправьте ошибку в импортированном файле * _TLB.pas: измените тип параметра двух методов IPenInputPanel:
function Get_AttachedEditWindow: SYSINT; safecall;
procedure Set_AttachedEditWindow(AttachedEditWindow: SYSINT); safecall;