zoukankan      html  css  js  c++  java
  • SetLocalInfo修改系统时间,立即生效

    SetLocalInfo修改系统时间后,必须重启机器才能生效。为了能够立即生效,需要广播一次消息,

    使用SetLocaleInfo()函数设置完后,要使用PostMessage()函数(此API在USER32.dll中)向系统广播该消息:WM_SETTINGCHANGE,这样才能让系统重新读取注册表信息并更新!

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Globalization;
    using System.Runtime.InteropServices;
    using Microsoft.Win32;
     
     
    namespace ConsoleApplication1
    {
        class Program
        {
     
            [DllImport("kernel32.dll", EntryPoint = "GetSystemDefaultLCID")]
            public static extern int GetSystemDefaultLCID();
     
            [DllImport("kernel32.dll", EntryPoint = "SetLocaleInfoA")]
            public static extern int SetLocaleInfo(int Locale, int LCType, string lpLCData);
     
            [DllImport("user32.dll", EntryPoint = "SendMessage")]
            public static extern int SendMessage(int hwnd, int wMsg, int wParam, int lParam);
     
            const int WM_SETTINGCHANGE = 0x001A;
            const int HWND_BROADCAST = 0xffff;
            public const int LOCALE_SSHORTDATE = 0x1F;
     
            static void Main(string[] args)
            {
     
     
                DateTimeFormatInfo dtfi = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat;
     
                string orginalFormatStr = dtfi.ShortDatePattern.ToString();
                Console.WriteLine("Show default: " + dtfi.ShortDatePattern);
     
                SetTimeFormat("yyyy/MMM/dd");
                SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0); 
     
                dtfi = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat;
                Console.WriteLine("Show change: " + dtfi.ShortDatePattern);
     
                SetTimeFormat(orginalFormatStr);
                dtfi = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat;
                Console.WriteLine("Show recovery: " + dtfi.ShortDatePattern);
                Console.ReadLine();
            }
     
     
     
            public static void SetTimeFormat(string dateFormat)
            {
                try
                {
                    int x = GetSystemDefaultLCID();
                    SetLocaleInfo(x, LOCALE_SSHORTDATE, dateFormat);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
     
     
        }
    }

  • 相关阅读:
    VIP邮箱用哪个好?163VIP邮箱怎么绑定到iPhone上?
    电子邮箱系统注册哪家好?163邮箱联系人怎么管理?
    企业邮箱域名是什么?外贸邮箱垃圾邮件怎么避免?
    宅在家里不香嘛?必玩H5休闲游戏推荐合辑
    最安全的邮箱排名是哪个?163VIP邮箱垃圾邮件怎么处理?
    外贸邮件怎么群发?群发邮件的电子邮箱有哪些?
    好用的外贸邮箱有哪些?公司企业邮箱申请哪个好?
    专业外贸企业邮箱怎么使用?外贸邮件开发信怎么写?
    现象看本质!爆款H5小游戏的衍生之路
    Java面试题总结之JDBC 和Hibernate
  • 原文地址:https://www.cnblogs.com/binbinxiang/p/3032050.html
Copyright © 2011-2022 走看看