Windows Mobile: Kiosk mode – Clear Today and Programs
This time I combined a set of functions to clear the Start Menu and the Today/Home Screen:
Before
After
Empty the Start Menu
The Start Menu is cleared by removing all files below “\Windows\Start Menu” (using SHGetSpecialFolderPath) after the whole bunch has been backed up into a Zip file (using Ionic compact framework library: http://dotnetzip.codeplex.com/). Additionally one registry key has to be changed to remove the Setting icon (HKLM\Security\Shell\StartInfo:HideSettings).
If the Settings icon has been changed, you need to reboot the device to make it visible or not.
Empty the Home Screen
All items in the home screen are enabled via the registry. The tool simply iterates thru all subkeys of HKLM\Software\Microsoft\Today\Items and sets Enabled=0. Before doing so another Backup is created with the current settings (using XML and serialization). Additionally, some other reg keys have to be changed: One is HKLM\Software\Microsoft\Today:Date to hide the Date item. Another is
HKLM\Software\Microsoft\Today:Enabled and, to disable the Home screen will popup periodically, HKLM\Software\Microsoft\Shell\Rai:SessionTimeout.
After changing the Home screen items via an app, the device has to be rebooted.
ClearDevice
The tool enables you to play with the above settings. It does backups before removing all the default stuff, so you can restore the settings later on.
Source code and binary
Attached is the source code (VS2008, WM 6.5.3 DTK, CF3.5, C#) and a binary inside.
ClearDevice (source and bin) (2683 downloads )
Hi, do you know how to remove the Phone and Contacts buttons from the Home screen? Regards, Craig
Hi
you better simple change the apps behind the buttons. Removing will require FindWindow and ShowWindow(SW_HIDE).
See http://www.mydigitallife.info/change-soft-keys-shortcuts-on-windows-mobile-today-or-home-screen/ and change
For Windows Mobile 6 Professional or Classic:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Today\Keys\112]
For Windows Mobile 6 Standard:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Home\Keys\112]
@=”” (Or label as Default)
“Open”=”[Enter path to the location of handling app program or executable]”
~josef
Hi,
I am dealing with some WM6.5 scanner,and I was wondering how to remove all icons but one or two from the start menu. Of course I found your code really interesting for that purpose.
As I am not an expert of WM devices, I have some question:
– how do I install and run your code?
– after that the start screen is empty, is it possible to manually add only selected applications?
Thanks a lot –
Gianni
Hi
it depends. The start menu displays just links to applications. The start menu is build from to contents in directory “\Windows\Start Menu” just like in desktop windows.
The today screen is filled with extensions set in Start-Settings-Home. Just tick the items you want to get back on the home screen.
~josef
Hi Josef an thanks for your answer, I will try to deal with it.
Can you please give me a few lines about how to install and run it? Thanks Gianni
Hi Josef,
thank you for many interesting articles, they were very helpful in kiosk development process. However I would have one question:
Is it possible in any way to hide the taskbar (not cover it with fullscreen but hide so it is not visible on the windows screen) and the same for the bottom menu with phone and contacts buttons (I have already disabled start and done buttons as you suggested in your kiosk part 1 article). Almost forgot, I’m using Winwows Handheld 6.5.3.
I would much appriciate your help.
Best regards,
Krzysztof
Why not just look for HHTASKBAR and use ShowWindow(hWnd, SW_HIDE). Same for the menu bar but with a different class name(s). Names as the menubar appears for every loaded process that has a menu.
And, note, hiding the taskbar or menubar may not ‘hide’ them, as the screen is not updated and the foreground window does not use the full screen but only the client area available with task bar and menu bar visible!
Hi josef
I am using this program and it works for me however I cannot get back to do a backup and end up having to wipe the whole handheld which is no biggy but a nuisance. After I hit remove (obviously) everything disappears but I have no way and doing a backup. Any suggestions? Also when hiding all the .lnk, is there a way to keep a couple of them. File explorer, RDP and a couple others that are needed to work with how I am configuring it?
Hello Andy
does [Restore] not work (before a wipe)?
Reagrding what to remove is up to you, just edit the code.
~Josef
Hi Josef
No when I remove all the links and restart I cannot get back to the Clear Device folder to preform a backup. and what lines of code do I modify? I opened all that I can in notepad to see if I can delete the code for File explorer and RPD but they still got removed. Can you specify where to remove the code? I see Form and Form1 but there is a couple other scripts that run in conjunction with them.
Hello Andy
I am sorry, but this a developer blog and I do not provide just-use tools.
You need to download the code, remove or comment out the lines for the stuff you want keep and then compile your own application.
~Josef
Hi Josef,
Was searching for the same technique and stumbled on to your blog. Beautiful! Works like a charm.
Thanks for sharing.
Hi. I am trying to either move everything in start menu to one folder or delete it, excluding remote desktop. I need help. I tried changing
int removeStartIcons(string subDir)
{
int iRet = 0;
string remote = @”\Windows\Start Menu\Programs\Remote Desktop Mobile.Ink”;
string[] sFiles=null;
try
{
sFiles = System.IO.Directory.GetFiles(subDir, “*.*”);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(“Exception ” + ex.Message + ” getting files ‘” + subDir + “‘”);
}
foreach (string s in sFiles)
{
System.Diagnostics.Debug.WriteLine(“2:” + s);
System.Console.WriteLine(“2:” + s);
OnRaiseCustomEvent(new CustomEventArgs(“2:” + s));
try
{
win32.SetFileAttributes(s, win32.FileAttributes.Normal);
if (s == remote)
{
OnRaiseCustomEvent(new CustomEventArgs(“Remote desktop not moved”));
}
else
{
File.Delete(s);
}
OnRaiseCustomEvent(new CustomEventArgs(“Deleting file ‘” + s + “‘ OK”));
iRet++;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(“Exception ” + ex.Message + ” deleting file ‘” + s + “‘”);
OnRaiseCustomEvent(new CustomEventArgs(“Deleting file ‘” + s + “‘ failed”));
}
}
return iRet;
}
in RemoveAllIcons.cs
I also tried changing from if else to if (s != remote) and if (s != “*Remote*”), those doesn’t work either
Hello Denis
‘doesn’t work’ is a very bad error description!
What does not work? Where does the code fail? Is there an exception? Does the original code work?
…
Please give more details
~josef
I am using Motorola MC3100 with “Windows Embedded 6.5 Classic”. I am not sure if this is identical to “Windows Mobile” but on the “About” screen it also says “CE 5.2”.
Could anyone here provide a hint how to add a shortcut to an app to the “desktop” (which, I understand, is called “Today” screen).
I spend several hours googling things around but found no solution to this problem.
Thanks a lot !
Hello Pete
the Today Screen items are not just links, they are Today Screen plugins: see the article here http://www.hjgode.de/wp/2014/04/24/mobile-development-writing-today-screen-plugins-the-easy-way/
Josef
Hi josef,
I found your utility as I was looking for a way to clear some of the icons off the start menu, however I made the mistake of clearing all but the application icons I wanted to keep and now the File Explorer icon is gone so I have no way of getting back to the Program Files\ClearDevice folder to run the utility again. Any suggestions?
Andrew
Hello Andrew
if you have an USB ActiveSync or Windows Mobile Device Center (WMDC) connection, you can use Servant Salamander or XDA Tools from my archive at http://www.hjgode.de/wp/2010/02/26/pocketpc-and-windowsce-essential-tools/. With Servant Salamander you can browse the device from your PC (you can even browse the device with WMDC, but you cannot start an app remotely as you can do with Servant Salamander). Or use ‘prun \windows\fexplore.exe’ from a command prompt on your PC with XDA Tools installed (unpacked).
If you do not have an WMDC connection, you are probably lost and need to clean boot the device to restore everything to factory default.
Pending on the device, you may have other options. For example, with an Intermec WEH device, you can create a barcode to start an application.
~josef
Hi Josef,
Thanks very much for your response. I have WMDC, but it wont help with my issue, so I’ll check out the utilities you mention.
Andrew