Click here to Skip to main content
Click here to Skip to main content

Manage Windows XP On Screen Keyboard

By , 22 Apr 2009
Rate this:
Please Sign up or sign in to vote.

Introduction

I was developing an application to be used on a panel PC and I faced the customer request to use only the touchscreen to enter any data required by my application. My first idea was to design by hand a form with as many buttons as a regular keyboard, but I changed my mind immediately. Next, after some web searching, I decided to use the standard on screen keyboard provided by Windows XP. 

Background

When you start the on screen keyboard (OSK.EXE) the first thing you can observe is that it is too small to be used with the resolution of a modern monitor, but the OSK doesn't allow you to resize it. This problem can be easily solved using the SetWindowPos API in order to set the requested size and position. The screen keyboard is presented as a usual application, so it has a window frame with control boxes and a menu. The control box could cause the keyboard application to close if the user clicks on the cross button (window close), and the menu is useless for the normal data entry. Nonetheless, the window frame and the menu consumes screen area. But how to remove these elements? The SetWindowLong API does the job. 

Using the Code

The class exposes three shared methods: 

'Shows the keyboard creating the process if necessary 
 ClKeyboard.Show()

'Hides the keyboard without killing the process  
 ClKeyboard.Hide()

'Kill the process that manages the keyboard 
ClKeyboard.Kill()  

When you call Show, the keyboard appears at the bottom of the screen, just above the taskbar, and is 350px tall while its width matches the screen width. These parameters are hard coded in the class, but they can be easily changed. 

Hope you enjoy this class. 

History

  • 22nd April, 2009: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Cbwhyw

Italy Italy
No Biography provided

Comments and Discussions

 
SuggestionAnother possible way to remove the menu PinmemberMember 908914913-Jun-12 12:34 
QuestionUAC question Pinmemberinbox20-Aug-11 1:44 
Thank you for sharing your code. In Visual Studio 2010, after googling around and adding this line to the app manifest file:
 
requestedExecutionLevel level="requireAdministrator" uiAccess="false"
 
I'm still getting this message on the OskProcess.start.
 
The requested Operation requires elevation
 
What can I do to resolve the UAC issue?
QuestionHow to prevent background color change when using WS_CHILD? PinmemberOlongdomango14-Apr-10 0:22 
Questionpossible to view only number keyboard? PinmemberJenhuohuo11-Feb-10 23:59 
GeneralDemo application PinmemberDeepak.Prahlad11-Aug-09 21:15 
GeneralYou may incluide a Demo compiled project... Pinmemberrodrilobo0222-Apr-09 15:12 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web02 | 2.8.140415.2 | Last Updated 22 Apr 2009
Article Copyright 2009 by Cbwhyw
Everything else Copyright © CodeProject, 1999-2014
Terms of Use
Layout: fixed | fluid