2010-07-12 2 views
0

Мне нужно запустить виртуальную клавиатуру (а именно click-n-type) из моего приложения, чтобы разрешить ввод данных в активном поле. Когда пользователь фокусируется на окне редактирования в окне моего приложения, виртуальная клавиатура появляется, чтобы разрешить ввод.Как запустить виртуальную клавиатуру без потери фокуса в WinXP?

Однако я не могу заставить это работать одним кликом. Когда я использую «start click-n-type.exe», клавиатура запускается нормально, но окно редактирования теряет фокус. Когда я использую «start/min click-n-type.exe», поле редактирования сохраняет фокус, но клавиатура минимизирована. Есть ли способ разместить на своем месте как фокус без изменений, так и виртуальную клавиатуру?

+0

Какой язык программирования вы используете? – Abel

+0

Java, и я запускаю виртуальную клавиатуру с помощью Runtime.getRuntime(). Exec() – user389419

ответ

0

Как правило, я предлагаю загружать ваше приложение как в dll процесса, но для этого может потребоваться много перепрограммирования. Вместо этого, это может помочь:

  • Всегда загружайте приложение, сделать его невидимым
  • Когда активное поле получает ввод пользователя, изменить параметры формы для Borderless и всегда на вершине;
  • Теперь ваше приложение должно быть использовано. Другое приложение теперь является следующим в Z-порядке. Убедитесь, что у вас есть ручка окна;
  • Когда кто-то что-то набирает или что-то нажимает на вашу виртуальную клавиатуру, переключите фокус (пользователь не заметит, вы всегда на высоте) и используйте SendKeys;
  • Затем переключите фокус обратно в ваше приложение.

Существуют и другие способы написания таких приложений, которые являются более гладкими, но требуют сильного понимания модели сообщений о сообщениях Windows и способах загрузки/выгрузки DLL из других приложений.

+0

Это звучит как много работы. Я не хочу писать свою собственную виртуальную клавиатуру, вместо этого я хочу использовать click-n-type в своем графическом приложении. – user389419

Смежные вопросы