Clase para poner en hora un Pocket PC con Visual C#
Como poner en hora u obtenerla desde las API’s del Sistema Operativo

Fecha: 10/Nov/2004 (09 de Noviembre del 2004)
Autor: José Miguel Torres (jtorres_diaz@terra.es)

 

 


Con la clase de a continuación, y con la utilización de las API's de WinCE podremos tanto obtener como ajustar la hora del reloj, veámosla.

Sistemas Operativos utilizados

Microsoft Windows Mobile 2002, Windows Mobile 2003, Windows Mobile 2003 Second Edition, Windows Mobile CE Phone Edition, Windows CE .NET 4.20

Código

Para obtener y sobretodo modificar la hora .NET Compact Framework no permite la última. Por tanto debemos echar mano de las API’s de coredll para poder realizarlo. Los dos métodos a llamar son GetSystemTime y SetSystemTime. Es importante la estructura que se utiliza SYSTEMTIME para manipular ambos métodos, veamos una clase que los encapsule:

………………………………

using System;

using System.Runtime.InteropServices;

 

namespace TimeSystem

{

       public class Time

      {

             public struct SYSTEMTIME

            {

                   public ushort wYear;

                  public ushort wMonth;

                  public ushort wDayOfWeek;

                  public ushort wDay;

                  public ushort wHour;

                  public ushort wMinute;

                  public ushort wSecond;

                  public ushort wMilliseconds;

            }

 

            [DllImport("coredll.dll")]

            public extern static void GetSystemTime(ref SYSTEMTIME lpSystemTime);

 

            [DllImport("coredll.dll")]

            public extern static uint SetSystemTime(ref SYSTEMTIME lpSystemTime);

      }

}
 

Obtener la hora

Para obtener la hora basta con llamar a la función GetSystemTime pasándole por referencia la estructura SYSTEMTIME, tal que así:

SYSTEMTIME st = new SYSTEMTIME();

GetSystemTime(ref st);

Poner en hora

Por otro lado para poner en hora lo haremos de la siguiente manera:

SYSTEMTIME st = new SYSTEMTIME();

st.wHour = 23;

st.wMinute = 30;

st.wSecond = 0;

if (SetSystemTime(ref st) == 0)

{

      MessageBox.Shoew("ERROR");

}

else

{

      MessageBox.Show(DateTime.Now.ToString());

}


ir al índice