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