I was reading through some of the messages on the microsoft.public.dotnet.framework.compactframework newsgroup when I came upon a real gem of a message.
The key piece of knowledge being, that there is a special registry key, that will disable GUI access for the clock on Windows Mobile devices.
Application State Registry Key for Windows Mobile Clock
HKEY_LOCAL_MACHINE\Software\Microsoft\Clock\
If this is set to 0x11 the clock is enabled, as by default. If it is set to 0x30, or probably anything not 0x11, it is disabled and ignores any attempts to run.
If you are writting any kind of salesforce automation applications, or route management software, then you can see just how useful this feature is. You just add a special admin feature to enable and disable the ability to set the time, or handle it entirely from within your application.
Now I just need to find out why this key even exists, since I hate to find out the OS likes to change it under circumstance X.
// disable clock
System.Byte[] offValue = new byte[1];
offValue [0] = 0x30;
OpenNETCF.Win32.RegistryKey registryKey =
OpenNETCF.Win32.Registry.LocalMachine.OpenSubKey(@"\Software\Microsoft\Clock\", true);
registryKey.SetValue("AppState", offValue);
registryKey.Close();
// enable clock
System.Byte[]
onValue = new byte[1];
onValue[0] = 0x11;
OpenNETCF.Win32.RegistryKey registryKey =
OpenNETCF.Win32.Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Clock\", true);
registryKey.SetValue("AppState", value);
registryKey.Close();