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) (2552 downloads )

19 Comments

  1. Craig says:

    Hi, do you know how to remove the Phone and Contacts buttons from the Home screen? Regards, Craig

  2. josef says:

    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

  3. Gianni says:

    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

  4. josef says:

    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

  5. Gianni says:

    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

  6. Krzysztof Kielan says:

    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

  7. josef says:

    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!

  8. Andy says:

    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?

  9. josef says:

    Hello Andy

    does [Restore] not work (before a wipe)?

    Reagrding what to remove is up to you, just edit the code.

    ~Josef

  10. Andy says:

    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.

  11. josef says:

    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

  12. Hi Josef,

    Was searching for the same technique and stumbled on to your blog. Beautiful! Works like a charm.

    Thanks for sharing.

  13. Denis says:

    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

  14. josef says:

    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

  15. Pete says:

    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 !

  16. josef says:

    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

  17. Andrew says:

    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

  18. josef says:

    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

  19. Andrew says:

    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

Leave a Reply