KIOSK mode or locking down software on the Field PC
Note: This information is provided as a reference and does not imply that Juniper Systems will provide full support for the use of any specific third-party hardware or software with a Juniper Systems product.
Some software developers prefer to operate in a "shell" or "kiosk" mode, or in other words to lock down the Field PC so that users are not allowed to access system settings and other operating system and maybe firmware functions that are not essential to the current application.
The Microsoft Windows Mobile operating system has many functions that were built to be accessible to users while in any application. This can limit software developers from being able to completely lock down the handheld. Below are some ways of forcing the handheld to operate in a "Kiosk" mode.
Close running Processes
Running processes that are not essential to a specific application can be closed to free memory and other resources for use by a specific application, and to prevent unexpected interruptions to main app that is to always have focus. Programs such as Task Manager, CEAppMgr, Oxios Memory, and others could be used to clear threads (processes). Additional information about getting and setting threads and priorities is provided at:
http://msdn.microsoft.com/en-us/library/aa910702.aspx
Kiosk and Enterprise Control Software
Third-party software can be used to lock down the handheld to operate in a KIOSK mode. Some recommended software applications include:
- SPB Kiosk
- SOTI MobiControl
- Askarya Technologies PocketKiosk Builder
Full Screen Control
A good example for how to completely take over the full screen (even hide the SIP button) is provided in the C++ code in the below linked text document.
If needing to control a specific window to prevent it from popping up while your app has focus (such as system messages), using its name you can watch for it similar to as shown in the following example.
HWND BatthWnd;
BatthWnd=FindWindow(L"Dialog",L" New Battery Detected");
if(BatthWnd)
{
SetForegroundWindow(BatthWnd);
SetActiveWindow(BatthWnd);
}
Some developers have been able to find the name of a window using the “Windows CE Remote Spy- Windows List (Windows CE)” program, which runs on a desktop PC through an ActiveSync/WMDC connection.
The Allegro MX provides an optional "specify battery charge" dialog box (window) which could be controlled by app software (unlike the default control panel window), or this dialog/window can be disabled completely using the following Windows registry settings.
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\Battery]
“BatteryDialog” : DWORD
0 – This will not display either Battery Dialog and will just use the previous values for the charge settings
1 – (default) This will display the Control Panel applet
2 – This will display the stand-alone dialog box
Controlling Keys/Buttons
Some hardware and/or software keys/buttons can not be easily controlled or prevented by an app. Changing the default behavior of the Windows hot keys can help prevent interruptions. These can be programmatically changed in the Windows registry at the following location.
[HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\Shell\Keys]
This is similar to as described for WinCE 5.0 at:
http://msdn.microsoft.com/en-us/library/ms929202.aspx
Newer Allegro MX (running WM6.1 OS release 2.0.5 and have a blue system board), there are a couple of customizations that were implemented to assist in locking down the unit for use in “Kiosk” mode. Both are registry changes.
-
Prevent Touchscreen Toggle and the key combination, “ALT+ESC”:
[HKEY_CURRENT_USER\ControlPanel\Keybd]
“Kiosk”=dword:1
; This will disable the touchscreen enable/disable toggle and “Alt+Esc” key combination -
Reassign or prevent Task Manager (Blue+Esc):
[HKEY_CURRENT_USER\ControlPanel\Keybd]
“AppName”=”<name of application>” or “” to prevent any app from launching
“CmdLine”=”<command line parameters>” (do not implement if blank)
References
Some references on how to write software to lock down the handheld to operate in a KIOSK mode include:
To allow an application to change lower level operating system settings, you may be able to use Client Provisioning (which meets Open Mobile Alliance (OMA) requirements) as described at:
http://msdn.microsoft.com/en-us/library/bb737226.aspx
Customizations
Methods are available for integrating application software into the operating system, re-branding the firmware and home screen, and other options as described in the articles at:
http://www.junipersys.com/index.php/Juniper-Systems/support/Developers/Mesa-Rugged-Notepad