Windows Mobile 6.1 tiende a mostrar en la agenda tanto los contactos de la agenda del teléfono como los almacenados en la tarjeta SIM. Y digo tiende porque a menudo nos encontramos que los muestra aún habiendo configurado el sistema para que los oculte.
Mientras que los contactos de la agenda del teléfono pueden almacenar varios números de teléfono, direcciones de correo electrónico y web, direcciones postales y demás datos interesantes, los contactos de la SIM sólo pueden almacenar nombre y número de teléfono, lo que los hace mucho menos útiles. Siempre tenemos la opción de borrarlos de la tarjeta SIM, pero si nuestro terminal sufre un percance o se queda sin batería en un momento importante, podría ser útil tener algunos contactos importantes en la SIM.
Así que la mejor solución pasa por ocultarlos. Esto puede hacerse con unos cuantos programas disponibles en la red, que generalmente lo que hacen es poner un cero en la clave de registro “HKCU\ControlPanel\Phone\ShowSIM” (Si no sabes de lo que estoy hablando… mejor no toques nada en el registro).
El problema surge porque en algunos terminales, este valor se pone a 1 (mostrando los contactos de la SIM) automágicamente en algún momento del arranque, así que aunque instalemos un programa que lo pone a 0 tras hacer un soft-reset, a menudo nos encontramos conque no ha funcionado y los contactos de la SIM vuelven a estar ahí… Mal.
¿Una posible solución? Hacer un programa que vuelve a poner el ShowSIM a 0, pero esta vez con un retardo, 120 segundos por ejemplo, de este modo esquivamos el problema y a los dos minutos desde el arranque se ocultarán los contactos que no queremos ver… Fácil, ¿no?
Ya hay un par de programas por ahí que hacen algo así, pero en realidad es algo relativamente sencillo y tenía ganas de aprender a hacer programas “de consola” para windows mobile, así que… Ahí va algo de código experimental, por si os interesa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | using System; using System.Threading; // To Sleep using System.Runtime.InteropServices; // For dllimport using Microsoft.Win32; // For Registry access :-) namespace pimhider { class Program { [DllImport("coredll.dll")] public static extern IntPtr SetCursor(IntPtr hCursor); static void Main(string[] args) { IntPtr hOldCursor = SetCursor(IntPtr.Zero); // Hide the "waiting" cursor Thread.Sleep(120*1000); // Sleep for some time String regPath = Registry.CurrentUser + "\\ControlPanel\\Phone\\"; Registry.SetValue(regPath, "ShowSIM", 0); // And hide the contacts! } } } |
En mi teléfono funciona, pero no me hago responsable de que en otro lo haga, o de que le pasen cosas malas al terminal o incluso a la tostadora. Usar con precaución ;-)



