Javscript would provide a navigation menu here. HOME
Last update 24. jan 2007
The iLock system enables you to lockdown a device into one application. The system is build on several main tools:
This app should be run from the registry key hklm\init, so it will launch before the device shell. Although there is an Exit menu item, you need a password (52401) to leave iLock2. The application will disable input for the taskbar and the desktop and should normally "killed" by some custom application. If LockTaskbar is started it will close iLock2.
This will lock the screen until a specified process is running and a defined window title and/or window class is launched on the device (use a link in \Windows\Start Up to automatically launch an application on your device). You can use WinTreeCE to find the class name, the title text and executable name of an application.
As iLock2 was hard to handle for non-programmers, iLock3 will be configured by the registry:
REGEDIT4 |
|
[HKEY_LOCAL_MACHINE\SOFTWARE\Intermec\iLock3] |
|
"Class2waitFor"="VXUTIL" |
Specify the Class Name of the Window you would like iLock3 to wait for. Can be empty. |
"Title2waitFor"="vxUtil" |
Specify the Title of the window you would like iLock3 to wait for. Dont leave blank, device will remain locked in iLock3.. |
"App2waitFor"="vxutil.exe" |
Enter the executable of the process you would like iLock3 to wait for. Dont leave blank, device will remain locked in iLock3. |
"UseFullScreen"="0" |
You can have iLock3 occupy the whole screen or spare for taskbar and menu bar. |
"KeepLockedAfterExit"="0" |
When iLock3 ends itself, it can leave taskbar and desktop locked or not. |
"MaximizeTagetOnExit"="0" |
Specify "1" if you like iLock to maximize the application it waits for. |
Version 3.3 info
added ColdBoot menu item and code
added code to recognize ck60
added HideTaskBar in timer1
added version info resource
To launch iLock3 before the shell launches you should change the registry and insert a new Launch and Depend entry in HKLM\Init with numbers lower than the shell launch entry. As example, where shell32.exe is Launch50:
[HKEY_LOCAL_MACHINE\init] "Launch45"="iLock3.exe" "Depend45"=hex:14,00,1e,00
see what is changed from iLock3 to iLock4. We now have additionally a Boot Option and a Info Screen
1.0 initial release 1.1 changed SignalStarted to return cmdline, so it can now be used with any launch/depend number 2.0 many changes, customized for solquest now waits for "Login" Window, if not found sets window "mRetail by Solquest" to top tapping the process list (listview), stops the timers for about 5 seconds watches the running windows list for "Setup..." and "Installing..." windows to bring them to front Password dialog now sets focus inside pw textbox on WM_PAINT 2.1 rearranged wait for 1. solquest (evm.exe, 2. mRetail..., 3. Login... 3.0 many changes 3.1 now we use the registry to read in the application to wait for and some more parameters 3.2 changed KeepLoggedAfterExit to KeepLockedAfterExit, MaximizeWindow now only used if Title2waitFor>0 replaced WaitForWindow with IsWindow so the UI is more responsive 3.3 added ColdBoot menu item and code added code in isIntermec to recognize ck60 added HideTaskBar in timer1 added version info resource 4.0 moved Registry read code in separate function ReadRegistry() added code to display informations like IP etc in About Dialog 4.0.0.1 changed name from iLock4 to iLock 4.0.0.2 wm_destroy added code for UseFullScreen, will hide/show taskbar on exit 4.0.0.3 changed timer1 Hidetaskbar to depend on UseFullScreen 4.0.0.4 removed KeepLockedAfterExit=0 from IDM_FILE_EXIT
This small app rotates the screen. Either it toggles between 0 and 90 degrees or you specify -0, -90, -180 or -270 on the command line.
Example: "iRotateCN2.exe -270" will rotate the screen to left. "iRotateCN2.exe -?" will show a short help.
This application will start and watch the running of an application provided with the command line. Usually iRUN2 should be started from a batch, for example within AutoUser.dat of a CN2. iRun2 will watch the application is running and restarts it, if closed.
Examples:
"iRun2.exe iesample.exe" will start and restart iesample.exe.
"iRun2.exe -stop" will close iRun2 and it will no longer watch the
exe is running.
This application provides the user with key shortcuts to applications. Actually (2. june 2006) the assigned 'hot' keys and there applications are hard coded into the source:
F3 toggle screen rotation between 0 and 90 degree by use of iRotateCN2.exe
F4 toggles desktop and taskbar locking state by use of LockTaskbar
F5 toggles SIP (software input panel) show/hide by use of iSIP2
All keystrokes or hot keys are transparent, this means, they are not lost and will reach the application just running in foreground. iHook2 can be started by placing a link to the exe in \Windows\Startup, by a batch file or some other AutoStart feature of the device OS.
This versions uses the registry to read the assigned keys and applications. Additionally the app is now safe and will only load once. The only argument supported is "-writereg" to write a default registry (see below).
[HKEY_LOCAL_MACHINE\SOFTWARE\Intermec\iHook2] "arg4"="iRun2.exe" "exe4"="\\windows\\iKill2.exe" "key4"=hex:\ 1b "arg3"="" "exe3"="explorer.exe" "key3"=hex:\ 71 "arg2"="" "exe2"="\\windows\\iSIP2.exe" "key2"=hex:\ 74 "arg1"="-toggle" "exe1"="\\windows\\LockTaskBar.exe" "key1"=hex:\ 73 "arg0"="" "exe0"="\\windows\\iRotateCN2.exe" "key0"=hex:\ 72
New in version iHook3 (version 2.0)
recognizes CK60
adds Notification icon in taskbar
New in iHook3 (version 3.1)
recognizes CN3
supports consuming/forwarding switch for hot-keys. Use "ForwardKey"
registry binary value 0 to disable forwarding hot-keys, 1 to enable forwarding
hotkeys.
This new option is usefull if you have a phone device and hook the number keys.
In this case disable forwarding with 0, otherwise the phone app will come in
front for the number keys.
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Intermec\iHook3]
"arg0"=""
"exe0"="\\Windows\\iRotate.exe"
"key0"=hex:\
26
"ForwardKey"=hex:\
00
17. oct 2007: Bug fixed version v3.1.1 is now at iHook3.exe
Using function keys by pressing numbers.
Note: Updated KeyToggle.exe and download cab. There was a bug, so the sticky key still produced wm_keydown messages. Fixed version is v2.1.1.0.
With keytoggle you can define a 'sticky' key that will change the beahviour of the number keys. As long as the sticky key is 'active', number keys from 1 to 0 will produce the function keys F1 to F10. If sticky key is active, the left LED will light in green.
To start keytoggle just tap it or let it start by a link in StartUp. If keytoggle is loaded, you can see a small yellow arrow sign in the taskbar.
If you tap this symbol, you are asked, if you want to unload the app. If the registry does not have values defined for keytoggle, it will use default values. If you try to launch keytoggle a second time you will get a message box. Only one instance of keytoggle can run at a time.
Using the registry you can define the behaviour of the sticky key. In example, you can have the sticky key remain active until it is pressed again, let it 'go off' or 'fallback' after a period of time or let it fallback after a number key has been pressed. If the sticky key is pressed again, it will always fallback.
REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\Intermec\KeyToggle] "Timeout"=dword:00000000 "autoFallback"=dword:00000001 "StickyKey"=dword:00000090
StickyKey:
default "144", decimal (VK_NUMLOCK)
the
VK_ value of the sticky key. Here you define, what you will have as the
sticky key. VK_ values are defined as in winuser.h. In example the VK_ value
for the NumLock key is 0x90 (144 decimal, see VK_NUMLOCK). The sticky key
will be consumed by keytoggle and is not visible to the system any more.
That means, that you should choose key value that you do not need in any
app you use.
Timeout:
default "3", three seconds
number of seconds
the sticky key will remain active. If 0, the sticky key will not fallback automatically
by time
autoFallback:
default "0"
if 0 the sticky key will
not fallback after pressing a number key. If 1 the sticky key will fallback
after a number key is pressed
Keytoggle only supports one argument: "-writereg". This will create the registry keys used by keytoggle and fill them with the default values.
You have a ITC 700 Color device. This has a alphanumeric keyboard but no function keys. You need the function keys to be able to use a web application within iBrowse. With keytoggle you can now for example use the Gold key as sticky key. You have to download the keyboard remapper tool cpkbdmap.cab from the ITC site (archived version here) and assign the Gold key to NUMLOCK.
With this remapping and keytoggle running you will to get a function keystroke simulated if you press the Gold key and then a number key.
Locktaskbar simply locks the desktop and the taskbar.
-lock lock desktop and taskbar -unload unlock desktop and taskbar, no password required -unlock unlock desktop and taskbar, requires password '52401' -toggle toggle the locking state for desktop and taskbar none same as -lock
New version supports WM5 devices as the CN3. See downloads
will kill the processes owned by an exe or simply close the application window.
Example:
"iKill2.exe iesample.exe" will close internet
explorer
toggles the visibility of the SIP or shows or hides the SIP
no args toggle SIP -show show the SIP -hide hide the SIP
New version supports WM5 devices as the CN3. See downloads
starts iesample and locks user by disabling menu and close button (X)
no args lock iesample (WinCE Internet Explorer) -lock same as no args -unlock unlocks iesample
simple tool to start an exe with arguments. Although you can use Action and tap/hold the clock on the today screen of a PocketPC to open a run dialog, this is not very comfortable.
Do you like to spy your WinCE device? Try zDump! I sued it to find the window classes and styles of iesample.exe to be able to write iLockIE2.
In this screen I spyed the X button of iesample.exe.
You would like to spy the windows running on a device, try WinTreeCE based on an article in CodeProject (http://www.codeproject.com/tools/showwindowtree.asp)
During the creation of an AutoInstall process, we found, that sometimes a custom autoinstall is installed before the ITC install has finished (for indepth information on this see AutoRunMechanics). If you then have code, that performs a reset, this reset could break the other running installs. In example, runautorun.exe launches AutoExec.exe. AutoExec launches foldercopy, autocab, dceinit and more. These applications are launched by autoexec with a EXEC call, which means, the processing of autoexec.dat will only wait up to 60 seconds before the next command in autoexec.dat is executed. After Autoexec.exe is finished, runautorun launches the first found AutoRun.exe (serached for in the order \SDMMC Disk\2577, \Storage Card\2577, \FlashFileStore\2577 or \DiskOnChip\2577). The system we had, uses a \SDMMC Disk\2577\AutoRun.exe with some additional cmd batch file. 'Our' AutoRun.exe and the batch file were started before all the stuff launched by AutoExec.dat were finished. As we had a reboot at the end of our cmd batch file, the system did reboot, before the installation of the ITC stuff was finished and leaves a corrupted install. The solution to this problem was to have an application that waits until autoexec.exe has gone from memory. I have written this tool and called it iWaitForExe. The tool is only of use if you have a .cmd or .bat batch command file. If you launch the tool from the explorer, it will not block any operation, as it is started as an independ separate process.
iWaitForExe is a prog without user interface. You have to specify the applications exe name as argument to the program. The tool will first check, if the exe is running, if not it exits immediately. It will then watch the running processes list every three seconds and that will be done 60 times. If the exe is not running any more, the tool will exit and stop blocking a batch file. The tool will also stop blocking after 180 seconds.
iWaitForExe.exe arguments:
application.exe replace application.exe by the application you will the tool block on
Sample:
"iWaitForExe autoexec.exe"
For further use, iWaitForExe returns following exit codes:
-3 application.exe not found in process list on start -2 waiting for the process timed out after 180 seconds, maybe the process is still running -1 the watched process has been gone from the process list 0 you did not specicy an argument 99 uups, this should never occur
Small and simple tool to perform cold or warmboot. No gui, no questions, if invoked with the right argument it does what it does immediately.
arguments
-c do a cold boot -w do a warmboot
Sample
rebootme -c does immediately a cold boot rebootme -w does immediately a warm boot
rebootme itself uses MS API KernelIOCtl. If it does not work on your ITC device (ie CK30), you can also use the ITC specific one, which uses ITC50.DLL. Same syntax as rebootme.
ARMv4 version (PocketPC, 7xx)
ARMv4i version (ITC WinCE devices, CK31, CN2A)
This tool will start an application given by the command line at a specified event. On every call, the tool will write a log (iRunAtEvent.log.txt) to the root dir. The arguments supported are:
set appname eventtype -sets the event eventtype to launch appname
reset appname -resets ALL events for appname
list -list all known registered events and the applications to launch
Although there are unsupported events listed in the log file, this does not mean the tool does not support them. In realtity the OEM (in this case tested on an ITC 730) of the device decided not to fire them (drivers are responsible for events to fire). You can simply check with your device by using these unsupported events and see, if they work. Simply use the calculator app in your tests.
To document this in depth here is a log file of this nice tool here:
01.07.2005 14:05:03: iRunAtEvent started ================================options set fullPathExeName event will set app to run at event sample: iRunAtEvent set "\Windows\pword.exe" NETCONNECT reset fullPathExeName will reset all events set for app sample: iRunAtEvent reset "\Windows\pword.exe" list will dump a list of apps linked to events sample: iRunAtEvent list ================================ known events: TIMECHANGE SYNCEND ONACPOWER OFFACPOWER NETCONNECT NETDISCONNECT DEVICECHANGE IRDISCOVERED RS232DETECTED RESTOREEND WAKEUP TZCHANGE MACHINENAMECHANGE ================================ Unsupported Events: IRDISCOVERED NETCONNECT NETDISCONNECT OFFACPOWER ONACPOWER ================================ \iRunAtEvent.exe set \windows\calc.exe ONACPOWER 01.07.2005 14:05:03: succes setting event ========== notification registered apps ================ Handle Status AppName Event Type 0x3002eea 0x0 repllog.exe NOTIFICATION_EVENT_NONE 0x6002e32 0x0 CALNOT.EXE NOTIFICATION_EVENT_NONE 0x5000aaf 0x0 clocknot.exe NOTIFICATION_EVENT_NONE 0x1d48 0x0 \\.\Notifications\NamedEvents\SSTimeChange NOTIFICATION_EVENT_TIME_CHANGE 0x6002eb2 0x0 \windows\calc.exe NOTIFICATION_EVENT_ON_AC_POWER <- found ****** 0x5002eb6 0x0 \windows\calc.exe NOTIFICATION_EVENT_ON_AC_POWER <- found ****** 0x50017dd 0x0 BlueEXE.exe NOTIFICATION_EVENT_WAKEUP 0x5000a02 0x0 btcc.exe NOTIFICATION_EVENT_WAKEUP 0x1d45 0x0 calnot.exe NOTIFICATION_EVENT_TIME_CHANGE 0x1d44 0x0 calnot.exe NOTIFICATION_EVENT_RESTORE_END 0x1d42 0x0 clocknot.exe NOTIFICATION_EVENT_RESTORE_END 0x1d43 0x0 clocknot.exe NOTIFICATION_EVENT_TIME_CHANGE 0x1d46 0x0 connmgr.exe NOTIFICATION_EVENT_TIME_CHANGE 0x1d47 0x0 connmgr.exe NOTIFICATION_EVENT_RS232_DETECTED 0x1d41 0x0 repllog.exe NOTIFICATION_EVENT_RS232_DETECTED 0x1d63 0x0 rtcupdate.exe NOTIFICATION_EVENT_TIME_CHANGE
During some testing of the event notifcation interface on a PocketPC device, I found that some essential events are declared but will never be fired. Two of these unsupported events are: NOTIFICATION_EVENT_NET_CONNECT and NOTIFICATION_EVENT_NET_DISCONNECT. So I started a small eVC4 workspace for ITC Pocket PC with Windows Mobile 2003 with one simple test application to play with the mibInterface.dwOperStatus. Then I got an app, that will start another prozess (given by the camdline). This tool is now called iRunOnNet.exe and will launch an exe (ie call "iRunOnNet.exe \windows\calc.exe" to have the caculator come up on ethernet connect), if an ethernet connection (the ITC device designed for has a dock ethernet connector) comes up. You can stop the hidden tool by launching it again with the argument -stop.
As a second goal, I would like to get a simple DLL that will export the status of an ethernet connection. Additionally I made a tool (isOnlineDLLtest.exe) that is used to test the functionallity of the DLL. The DLL only exports one function fnIsEnetOnline(). This will give a 0, if ethernet is offline and 1, if ethernet is online. A second export is the variable nIsEnetOnline which will hold the last status. The isOnlineDllTest uses the function fnIsEnetOnline() in a timer and simply shows a text with the last result of this call.
iRunOnNet is a stand-alone app and does not need isEnetOnline.dll. You can either directly use iRunOnNet to have an application launch on a ethernet network connection or you have your own apllication use isEnetOnline.dll in a timer to check for an ethernet connect. The sources for all this are available at http://groups.yahoo.com/group/ITC_Software/ as all other sources of the tools on this page.
If you have a ITC PPC device and would not like the system to wake up on hardware keys you can use this samll tool to disable ALL wakeup keys. As you should know, the definition of the wakeup keys is done inside an EEProm and so there is no way to disable these keys thru registry entries. Now you can use this tool or look in the sources on how to disable the wake up keys.
If you have an ITC PPC device, you will be asked to calibrate the screen on every cold boot, if you have disabled EnableRegistryRestore and don't use a saved registry. To overcom the initial calibration screen, you can put NoWlecome.exe renamed to AutoCard.exe onto your memory card (SDMMC Disk or Storage Card) into the 2577 dir. If there is a AutoCard.exe, the autoexec.dat will call this automatically on startup of the device. The NoWelcome will look for the model name of your ITC device, if it is a supported one (730, 750, 760, 741) it look for calibration data in the registry. If there are no calibration data, the tool will put some default calibration data there. The device will still show the calibration screen on startup for a short time until AutoCard.exe (alias NoWelcome) is run. doing the calibration this way is a little bit dangerous, as the values used by the tool are not as exact as the one that you get, if you calibrate the screen. So you should give the user an option to calibrate if you have a kiosk mode application.
NoWelcome uses a log file "NoWelcome.log.txt" to document what has happened. There is no gui and no arguments.
There will be a tool called NoCal by ITC in future, that will something more. The calibration data will then be stored additionally in EEProm and the tool will only show the calibration screen on startup, if the stored values are incorrect compared to the registry data.
NEW: Updated NoWelcome: AutoCard.exe
Do you like your device wakes up every midnight? If not, this little tool is for you. It simply deletes the schedule entry for CALNOT.EXE, which is launched every midnight to update repeating alarms.
Download ARMv4(WM2003) ARMv4i(WM2005)
You need a correct local time on your windows mobile device? Then check this free SNTP client app. It is configured using the registry:
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Intermec\SNTPclient]
"TimeServer"="192.168.0.1"
"SynchroniseClock"=dword:00000001
Enter a time server (in example: time-a.nist.gov) and if the tool should update the clock or not. Everytime the app is launched, it will try to get the time by the specified time server. You will find a log at the root of your device: \SNTPClient.log.txt. You can place a link to the tool in \Windows\StartUp to have it run on every warm boot of the device.
Download ArmV4 (WM2003)
There is a cab file that should be placed in DiskOnChip\Cabfiles (or Flash File Store\Cabfiles). So everytime the device is cold booted, it will install the iLock system. The installation will enter two new registry entries:
[HKEY_LOCAL_MACHINE\init]
"Launch45"="iLock2.exe"
"Depend45"=hex:14,00,1e,00
These files are copied to the windows dir:
iHook2.exe
iKill2.exe
iLock2.bmp
iLock2.exe
iRotateCN2.exe
iRun2.exe
iSIP2.exe
LockTaskbar.exe
AutoUser.dat file is copied to \DiskOnChip\2577
AutoUser.dat is used to launch iHook2.exe and iRun2.exe with iesample.exe. Here is the content of the file:
run "\Windows\iHook2.exe"
run "\Windows\iRun2.exe" iesample.exe
That's all!
File |
CN2 version (Windows CE) |
Date |
7xx color version |
Date |
iLock Documentation in Word format. |
||||
iHook2.exe |
20 jun 2005 |
20 jun 2005 |
||
iHook3.exe |
24 jan 2006 |
24 jan 2006 |
||
iHook3.exe (v3.1) |
7 aug 2007 |
17 oct 2007 |
||
iKill2.exe |
29 jul 2005 |
29 jul 2005 |
||
iLock2.bmp |
20 jun 2005 |
20 jun 2005 |
||
iLock2.exe |
20 jun 2005 |
20 jun 2005 |
||
iRotateCN2.exe |
20 jun 2005 |
- |
- |
|
iRun2.exe |
20 jun 2005 |
20 jun 2005 |
||
iSIP2.exe |
20 jun 2005 |
20 jun 2005 |
||
LockTaskbar.exe |
20 jun 2005 |
20 jun 2005 |
||
iLock3.exe |
15 sept 2005 |
15 sept 2005 |
||
iLock3 install cabs |
15 sept 2005 |
15 sept 2005 |
||
iLock v3.3 |
24 jan 2006 |
24 jan 2006 |
||
iLock v4.0.0.4 |
7 apr 2006 |
7 apr 2006 |
||
Additional Tools |
||||
|
Windows CE 4.2 ARMv4i |
Windows Mobile 2003 ARMv4 |
||
iLockIE2 |
23 jun 2005 |
|
|
|
iCMD2 |
- |
- |
22 jun 2005 |
|
zDump |
23 jun 2005 |
- |
- |
|
WinTreeCE (sources at yahoo) |
31 jun 2005 |
31 jun 2005 |
||
Keyboard remap tool |
- |
- |
20 jun 2005 (upload date) |
|
iWaitForExe |
22 jul 2005 |
- |
- |
|
rebootme |
22 jul 2005 |
22 jul 2005 |
||
iRunAtEvent |
22 jul 2005 |
22 jul 2005 |
||
isEnetOnline |
22 jul 2005 |
22 jul 2005 |
||
NoWakeUpKeys |
- |
- |
22 jul 2005 |
|
30. jan 2007 |
use left file too |
|
||
NoWelcome |
- |
- |
22 jul 2005 |
|
NEW NoWelcome |
(1) ITC is
last change: 25.Jun 2008