Как использовать DateTimePicker для SetSystemTime? - PullRequest
1 голос
/ 05 января 2011

Возможно, это просто, но я не вижу DateTimePicker свойства или метода, которые я могу использовать для SetSystemTime в Microsoft Visual Studio Microsoft.NET WinForms CompactFramework v2.0 Windows CE 5.0.

Редактировать: более конкретно, как получить выбранную дату из DateTimePicker , чтобы я мог применить ее к SetSystemTime ?

Ответы [ 2 ]

3 голосов
/ 06 января 2011

Я думаю, что следующий фрагмент должен работать:

[DllImport("coredll.dll", SetLastError = true)]
static extern bool SetSystemTime(ref SYSTEMTIME time);

[StructLayoutAttribute(LayoutKind.Sequential)]
public struct SYSTEMTIME
{
    public short wYear;
    public short wMonth;
    public short wDayOfWeek;
    public short wDay;
    public short wHour;
    public short wMinute;
    public short wSecond;
    public short wMilliseconds;

    public SYSTEMTIME(DateTime value)
    {
        wYear = value.Year;
        wMonth = value.Month;
        wDayOfWeek = value.DayOfWeek;
        wDay = value.Day;
        wHour = value.Hour;
        wMinute = value.Minute;
        wSecond = value.Second;
        wMilliseconds = value.Milliseconds;
    }
}

public void setTimeButton_Click(object sender, EventArgs e)
{
    // DateTimePicker usually provide with the date but not time information
    // so we need to get the current time
    TimeSpan currentSystemTime = DateTime.Now.TimeOfDay;
    DateTime newDate = newDateTimePicker.Value.Date;
    // Join the date and time parts
    DateTime newDateTime = newDate.Add(currentSystemTime);

    SYSTEMTIME newSystemTime = new SYSTEMTIME(newDateTime);
    if (!SetSystemTime(newSystemTime))
        Debug.WriteLine("Error setting system time.");
}
2 голосов
/ 05 января 2011
...