3 08 2010
.NET Compact Framework: Alterando a data do dispositivo via código
.NET Compact Framework: Alterando a data do dispositivo via código
Fala pessoal, tudo tranquilo?
Para quem precisa de uma maneira de alterar a data do dispositivo, seja a data de sistema ou a data local (que considera o fuso horário), segue o código que faz exatamente isso, utilizando os DllImports das funções da coredll.dll:
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace SmartDeviceProject1
{
public partial class Form6 : Form
{
public Form6()
{
InitializeComponent();
// Utilizando:
DateTimeUtils.SetLocalDateTime(new DateTime(2010, 7, 29, 15, 5, 0));
// Ou:
//DateTimeUtils.SetLocalDateTime(new DateTime(2010, 7, 29, 15, 5, 0));
}
public struct SystemTime
{
public ushort Year;
public ushort Month;
public ushort DayOfWeek;
public ushort Day;
public ushort Hour;
public ushort Minute;
public ushort Second;
public ushort Millisecond;
}
public class DateTimeUtils
{
[DllImport("coredll.dll", EntryPoint = "SetLocalTime", SetLastError = true)]
public extern static bool WinCESetLocalTime(ref SystemTime st);
[DllImport("coredll.dll", EntryPoint = "SetSystemTime", SetLastError = true)]
public extern static bool WinCESetSystemTime(ref SystemTime st);
public static void SetLocalDateTime(DateTime value)
{
SystemTime st = new SystemTime();
st.Year = (ushort)value.Year;
st.Month = (ushort)value.Month;
st.Day = (ushort)value.Day;
st.DayOfWeek = (ushort)value.DayOfWeek;
st.Hour = (ushort)value.Hour;//((value.Hour + 1) % 24);
st.Minute = (ushort)value.Minute;
st.Second = 00;
st.Millisecond = (ushort)value.Millisecond;
bool result = WinCESetLocalTime(ref st);
if (true != result)
{
int error = Marshal.GetLastWin32Error();
throw new Exception("Ocorreu um erro : " + error);
}
}
public static void SetSystemDateTime(DateTime value)
{
SystemTime st = new SystemTime();
st.Year = (ushort)value.Year;
st.Month = (ushort)value.Month;
st.Day = (ushort)value.Day;
st.DayOfWeek = (ushort)value.DayOfWeek;
st.Hour = (ushort)value.Hour;//((value.Hour + 1) % 24);
st.Minute = (ushort)value.Minute;
st.Second = 00;
st.Millisecond = (ushort)value.Millisecond;
bool result = WinCESetSystemTime(ref st);
if (true != result)
{
int error = Marshal.GetLastWin32Error();
throw new Exception("Ocorreu um erro : " + error);
}
}
}
}
}
É isso aí! Espero que ajude!
Até a próxima!
André Alves de Lima.
SQL Server Management Studio 2008: Saving changes is not permitted Microsoft Visual Studio 2010 LightSwitch: o que é e pra quê serve