using System.Runtime.InteropServices;

namespace Falcon.SugarApi.Windows
{
    /// <summary>
    /// 系统类
    /// </summary>
    public partial class System
    {
        [StructLayout(LayoutKind.Sequential)]
        private struct Systemtime
        {
            public short year;
            public short month;
            public short dayOfWeek;
            public short day;
            public short hour;
            public short minute;
            public short second;
            public short milliseconds;
        }

        [DllImport("kernel32.dll")]
        private static extern bool SetLocalTime(ref Systemtime time);

        /// <summary>
        /// 设置Windows系统时间。应用程序必须以管理员身份运行,否则无法设置
        /// </summary>
        /// <param name="dt">需要设置的时间</param>
        /// <returns>返回系统时间设置状态,true为成功,false为失败</returns>
        public static bool SetLocalDateTime(DateTime dt) {
            Systemtime st;
            st.year=(short)dt.Year;
            st.month=(short)dt.Month;
            st.dayOfWeek=(short)dt.DayOfWeek;
            st.day=(short)dt.Day;
            st.hour=(short)dt.Hour;
            st.minute=(short)dt.Minute;
            st.second=(short)dt.Second;
            st.milliseconds=(short)dt.Millisecond;
            bool rt = SetLocalTime(ref st);
            return rt;
        }

    }
}